【发布时间】:2010-09-16 18:38:23
【问题描述】:
我正在尝试在 Cakephp 1.3 中查询 hasAndBelongsToMany 关系,但看起来正在运行的 SQL 查询并未对多对多表进行联接。
我有一个 users 表、projects 表和 users_projects 表。我想在单独的分配控制器中获取用户关联的所有项目的列表。
我一直在阅读有关该主题的 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 中以多对多关系获取给定用户的项目列表的正确语法是什么?
【问题讨论】:
标签: cakephp has-and-belongs-to-many