Я пытаюсь запросить отношение hasAndBelongsToMany в Cakephp 1.3, но похоже, что выполняемый SQL-запрос не выполняет объединение таблицы «многие ко многим».
У меня есть таблица пользователей, таблица проектов и таблица users_projects. Я хочу получить список всех проектов, с которыми связан пользователь, в отдельном контроллере Allocations.
Я читаю книгу CakePHP на тему: http://book.cakephp.org/view/1044/hasAndBelongsToMany-HABTM
Итак, я пытался это:
var_dump($this->Allocation->User->Project->find('list',array('conditions'=>array('Project.user_id'=>'21'))));
Однако, это не работает, ничего не возвращает и эта ошибка:
Warning (512): SQL Error: 1054: Unknown column 'Projects.user_id' in 'where clause' [CORE/cake/libs/model/datasources/dbo_source.php, line 681]
Query: SELECT `Project`.`id`, `Project`.`name` FROM `projects` AS `Project` WHERE `Projects`.`user_id` = '21'
Похоже, что CakePHP не выполняет требуемого соединения.
Это в моих проектах модель:
var $hasAndBelongsToMany = array(
'User' => array(
'className' => 'User',
'joinTable' => 'users_projects',
'foreignKey' => 'project_id',
'associationForeignKey' => 'user_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
А это в моей модели пользователей:
var $hasAndBelongsToMany = array(
'Project' => array(
'className' => 'Project',
'joinTable' => 'users_projects',
'foreignKey' => 'user_id',
'associationForeignKey' => 'project_id',
'unique' => true,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'finderQuery' => '',
'deleteQuery' => '',
'insertQuery' => ''
)
Итак, каков правильный синтаксис для получения списка проектов для данного пользователя в отношениях «многие ко многим» в cakephp?