2012-04-01 15 views
10

私はCakePHPフレームワークを使用しています。クエリの結果を返すとき、フレームワークは "実験的な" PDOStatement::getColumnMetaを呼び出して、データベースから戻ってくるデータを「配列化」します。ただし、クエリによっては結果が異なる場合があります。PDOStatement :: getColumnMetaは、ビュー名の代わりに元のテーブル名を返します。

すべての列がビューの名前に関連付けられている場合、データの配列が期待通りに戻ってくることがあります。他の時には、データが混在して戻ってきます。データの一部は、ビューに対応する元のテーブルに関連付けられた配列に格納されます。

// correct 
Array(
[MyInstall] => Array 
    (
     [id] => a6d1342a-7b4d-11e1-8397-60195b7d6275 
     [user_id] => dc038c9e-7b4b-11e1-8397-60195b7d6275 
     [script_id] => 057de1e0-7b48-11e1-8397-60195b7d6275 
     [path] => 
     [url] => 
     [created] => 2009-06-15 12:43:30 
     [version] => 3.2.1 
     [admin_url] => wp-admin 
     [name] => WordPress 
     [icon] => icon_WordPress.gif 
    ) 
) 

//incorrect 
Array(
[MyInstall] => Array 
    (
     [id] => c71a2368-7b4d-11e1-8397-60195b7d6275 
     [user_id] => dc038c9e-7b4b-11e1-8397-60195b7d6275 
     [path] => 
     [url] => 
     [created] => 2011-11-07 22:26:38 
     [version] => 3.2.1 
     [admin_url] => wp-admin 
) 

[Script] => Array 
    (
     [script_id] => 057de1e0-7b48-11e1-8397-60195b7d6275 
     [name] => WordPress 
     [icon] => icon_WordPress.gif 
) 
) 

結果が構築されている方法は、PDOStatment::getColumnMetaの結果からです。ここgetColumnMetaのサンプル結果は次のようになります。

私はMySQL用PDOを使用して、この同じ情報を得ることができる方法上の任意の提案
Array 
(
    [native_type] => STRING 
    [pdo_type] => 2 
    [flags] => Array 
     (
      [0] => not_null 
     ) 

    [table] => MyInstall 
    [name] => id 
    [len] => 108 
    [precision] => 0 
) 

?または、この問題の別の解決策がありますか?

ところで、私はすでにfiled a bugです。

+0

この問題は、ビュー名エイリアスとWhere句の問題の組み合わせを使用することに関連していることがわかりました。 (OPのバグを参照)。まだPHP開発者からの応答を待っています。 –

答えて

2

これは判明しているように、現在MySQLで知られているバグです。http://bugs.mysql.com/bug.php?id=66794、まだ書面の時点で保留中です。

+1

おそらく、PHPのチケットはMySQLバグトラッカーにリンクする必要がありますか? – RandomSeed

関連する問題