2012-04-01 13 views
10

Estoy utilizando el framework CakePHP. Al devolver los resultados de una consulta, el marco llama al "experimental" PDOStatement::getColumnMeta para "organizar" los datos cuando regresan de la base de datos. Sin embargo, hay resultados mixtos según la consulta.PDOStatement :: getColumnMeta devuelve el nombre original de la tabla en lugar del nombre de la vista

Hay momentos en que la matriz de datos vuelve como se esperaba, donde todas las columnas están asociadas al nombre de la vista. Otras veces, los datos vuelven mezclados, donde algunos de los datos se encuentran en una matriz asociada con la tabla original que corresponde a la 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 
) 
) 

La forma en que los resultados se construyen es a partir de los resultados de la PDOStatment::getColumnMeta. Aquí es lo que es un resultado de la muestra de getColumnMeta parece:

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

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

Cualquier sugerencia sobre cómo puedo obtener esta misma información utilizando DOP para MySQL? ¿O hay otra solución a este problema?

BTW: Ya tengo filed a bug con la gente de PHP en esto.

+0

Descubrí que este problema está relacionado con el uso de una combinación de alias de nombre de vista combinados con problemas de la cláusula Where. (ver el error en el OP). Todavía estoy esperando una respuesta del desarrollador de PHP. –

Respuesta

Cuestiones relacionadas