我想查詢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