私は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
のサンプル結果は次のようになります。
Array
(
[native_type] => STRING
[pdo_type] => 2
[flags] => Array
(
[0] => not_null
)
[table] => MyInstall
[name] => id
[len] => 108
[precision] => 0
)
?または、この問題の別の解決策がありますか?
ところで、私はすでにfiled a bugです。
この問題は、ビュー名エイリアスとWhere句の問題の組み合わせを使用することに関連していることがわかりました。 (OPのバグを参照)。まだPHP開発者からの応答を待っています。 –