2012-04-01 12 views
10

Używam framework CakePHP. Zwracając wyniki kwerendy, struktura nazywa "eksperymentalną", aby "ułożyć w szyk" dane po powrocie z bazy danych. Jednak w zależności od zapytania wyniki są mieszane.PDOStatement :: getColumnMeta zwraca oryginalną nazwę tabeli zamiast nazwy widoku

Czasami tablica danych wraca zgodnie z oczekiwaniami, a wszystkie kolumny są powiązane z nazwą widoku. Innym razem dane są mieszane, gdy niektóre dane znajdują się w tablicy powiązanej z oryginalną tabelą, która odpowiada widokowi.

// 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 
) 
) 

Sposób, w jaki wyniki są budowane, pochodzi z wyników PDOStatment::getColumnMeta. Oto co wynika próbka getColumnMeta wygląda następująco:

Array 
(
    [native_type] => STRING 
    [pdo_type] => 2 
    [flags] => Array 
     (
      [0] => not_null 
     ) 

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

Wszelkie sugestie, w jaki sposób mogę uzyskać tę samą informację za pomocą PDO dla MySQL? Czy istnieje inne rozwiązanie tego problemu?

BTW: Już mam filed a bug z ludźmi PHP na ten temat.

+0

Odkryłem, że ten problem jest związany z używaniem kombinacji nazw widoków Aliasy połączone z problemami z klauzulami Where. (patrz błąd w OP). Nadal czekam na odpowiedź od dewelopera PHP. –

Odpowiedz

Powiązane problemy