我想查询Cakephp 1.3中的hasAndBelongsToMany关系,但它看起来像正在运行的SQL查询不是在多对多的表上执行Join。需要帮助hasAndBelongsToMany(HABTM)CakePHP找到
我有一个用户表,项目表和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中的多对多关系?
当改变为所有我仍然得到相同的错误。这里是SQL输出:Query:SELECT'Project'.'id','Project'.'name','Project'.'description','Project'.'created','Project'.'modified' FROM' projects' AS'Project' WHERE'Projects'.'user_id' ='21' – lanrat 2010-09-16 18:48:55
我也希望返回的数据是以html格式使用的列表格式。 – lanrat 2010-09-16 18:50:13
在用户和项目模型中重命名连接表之后,您是否还更改了'joinTable'=>'users_projects'? – ABailiss 2010-09-18 10:22:22