Estoy trabajando en una aplicación CakePHP 1.2. Tengo un modelo "Usuario" definido con algunas relaciones HABTM con otras tablas a través de una tabla de unión.¿Cómo consulto datos en CakePHP usando relaciones HABTM?
Ahora tengo la tarea de encontrar información de usuario basada en los datos almacenados en una de estas tablas HABTM. Lamentablemente, cuando se ejecuta la consulta, mi condición se rechaza con un error sobre la falta de una tabla. Tras la inspección, parece que CakePHP no incluye ninguna de las tablas HABTM en la declaración seleccionada.
Mi relación HABTM usuario es el siguiente:
var $hasAndBelongsToMany = array(
'Course' => array(
'className' => 'Course',
'joinTable' => 'course_members',
'foreignKey' => 'user_id',
'associationForeignKey' => 'course_id',
'conditions' => '',
'order' => '',
'limit' => '',
'uniq' => false,
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
),
'School' => array(
'className' => 'School',
'joinTable' => 'school_members',
'foreignKey' => 'user_id',
'associationForeignKey' => 'school_id',
'conditions' => '',
'order' => '',
'limit' => '',
'uniq' => false,
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
),
'Team' => array(
'className' => 'Team',
'joinTable' => 'team_members',
'foreignKey' => 'user_id',
'associationForeignKey' => 'team_id',
'conditions' => '',
'order' => '',
'limit' => '',
'uniq' => false,
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
);
El error es:
SQL Error: 1054: Unknown column 'School.name' in 'where clause'
Y, por último, la consulta se está tratando de ejecutar
SELECT
`User`.`id`, `User`.`username`, `User`.`password`, `User`.`firstName`, `User`.`lastName`, `User`.`email
`, `User`.`phone`, `User`.`streetAddress`, `User`.`city`, `User`.`province`, `User`.`country`, `User
`.`postal`, `User`.`userlevel`, `User`.`modified`, `User`.`created`, `User`.`deleted`, `User`.`deleted_date
` FROM `users` AS `User` WHERE `User`.`id` = 6 AND `School`.`name` LIKE '%Test%' LIMIT 1
Como mejor que yo sepa esto no debería importar como Establecí explícitamente la tabla conjunta y los nombres de modelo. –