Sto utilizzando il framework CakePHP. Quando si restituiscono i risultati di una query, il framework chiama "experimental" PDOStatement::getColumnMeta
per "allineare" i dati quando ritorna dal database. Tuttavia, vi sono risultati misti a seconda della query.PDOStatement :: getColumnMeta restituisce il nome della tabella originale anziché il nome della vista
Ci sono momenti in cui la matrice di dati ritorna come previsto dove tutte le colonne sono associate al nome della vista. Altre volte, i dati tornano mischiati, dove alcuni dati si trovano in una matrice associata alla tabella originale che corrisponde alla vista.
// 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
)
)
Il modo in cui i risultati sono costruite è dai risultati della PDOStatment::getColumnMeta
. Ecco ciò che un risultato campione di getColumnMeta
assomiglia:
Array
(
[native_type] => STRING
[pdo_type] => 2
[flags] => Array
(
[0] => not_null
)
[table] => MyInstall
[name] => id
[len] => 108
[precision] => 0
)
Qualche suggerimento su come posso ottenere le stesse informazioni utilizzando DOP per MySQL? O c'è un'altra soluzione a questo problema?
BTW: ho già filed a bug con la gente PHP su questo.
Ho scoperto che questo problema è correlato all'utilizzo di una combinazione di nomi di viste Alias combinati con problemi di clausola Where. (vedi il bug nell'OP). Sto ancora aspettando una risposta dal PHP dev. –