2012-04-01 13 views
10

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.

+0

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. –

risposta

Problemi correlati