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