Otro problema que me ocurrió, a parte del que se explica en un mensaje
anterior "atributo $schema", Es que daba unos errores diciendo
que no se había definido una clave primaria, revisando el código
llegué a que el problema venía por el método "dump_info()" de la clase
"ActiveRecord"; cuando me recupera el esquema de la base de datos
(línea 330, yo uso PostgreSQL), en ese bloque se ejecuta esta
consultar:
"SELECT a.attname AS Field, t.typname AS Type,
CASE WHEN attnotnull=false THEN 'YES' ELSE 'NO' END AS Null,
CASE WHEN (select cc.contype FROM pg_catalog.pg_constraint cc
WHERE
cc.conrelid = c.oid AND cc.conkey[1] = a.attnum)='p' THEN 'PRI'
ELSE ''
END AS Key FROM pg_catalog.pg_class c, pg_catalog.pg_attribute a,
pg_catalog.pg_type t WHERE c.relname = '{$table}' AND c.oid =
a.attrelid
AND a.attnum > 0 AND t.oid = a.atttypid"
Se recuperan los campos con un alias (lo que está después de AS), con
la primera letra en "mayúscula", pero PostgresSQL regresa esos alias
en "minúscula"; y cuando se intenta hacer la carga del modelo (a
partir de la línea 345 del mismo archivo) en la clase, no carga nada
porque intenta recuperar valores con iniciales mayúscula (ej.: $this-
>fields[] = $field;), pero en el arreglo existen con letras
minúsculas, y parece que php hace la distinción entre mayúsculas y
minúsculas, al menos en los índices de arreglos.
Para solucionarlo puse todos los alias en minúsculas y en la carga del
modelo a la clase también;
No sé si será problema con PostgreSQL o alguna configuración especial
en mi sistema: Uso Debian Lenny, PostgreSQL 8.2 y PHP 5.2 y Kumbia 0.4.7
Comentarios
Luego busqué en el código y llegué a ese método (dump_info) y corrí directo en la base de datos el código que utiliza para obtener la estructura del modelo y ahí me dí cuenta que a pesar que los alias tenían la primera letra mayúscula la consulta devolvía todo en minúscula, y al hacer la comparación php distinguía como cosas diferentes esto: $field; y $field;
Al final, no podría precisar la causa del problema, ya que a vos te funciona bien.
Una cosa, probá correr la consulta que está en la línea 331 (archivo active_record.php), directamente sobre la base de datos y me contás si los alias los devuelve con la primera mayúscula o todo en minúsculas. Te agradecería me hicieras ese favor para verificar más o menos por dónde anda el problema.
pero lo raro es que me funciona con StandardForm