我一直沒能找到解決這個問題的解決方案。我試圖查詢我的數據庫中的用戶所屬的組列表。用戶可以在多個組中,並且組可以有多個用戶。CakePHP從habtm檢索數據
我有「用戶」,「組」和「groups_users」表。每個都有一個「id」字段,「groups_users」表有兩個其他字段,「group_id」和「user_id」。
我認爲所有的表格都正確組成。
我user.php的,和Group.php模型文件看起來像這樣
//app/Model/User.php
class User extends AppModel {
public $recursive = 1;
public @hasAndBelongsToMany = array(
'Group' => array(
'className' => 'Group',
'joinTable' => 'groups_users',
'foreignKey' => 'user_id',
'associationForeignKey' => 'group_id'
)
);
}
//app/Model/Group.php
class Group extends AppModel {
public $recursive = 1;
public @hasAndBelongsToMany = array(
'User' => array(
'className' => 'User',
'joinTable' => 'groups_users',
'foreignKey' => 'group_id',
'associationForeignKey' => 'user_id'
)
);
}
然後,在我的控制文件中我有這個
//app/Controller/ProjectController.php
class ProjectController extends AppController {
public $uses = array('Groups', 'Users');
...
$this->set('groupsForUser', $this->Groups->find('all', array(
'conditions' => array('Users.UserName' => 'testuser1')
));
}
每次我試圖顯示的數據,我收到錯誤消息 錯誤:.....'Where子句'中的未知列'Users.UserName'
它顯示m e它試圖運行的SQL: SELECT Groups
。 id
,...從accounts
。 groups
AS Groups
其中Users
。 ''testuser1'
很明顯,表之間的關聯沒有正確地發生,它發送的SQL查詢沒有正確連接,但我無法弄清楚這裏出了什麼問題。我試過品種,如
.....$this->Groups->Users->find(....
而這樣的東西,但似乎沒有任何工作。
幫助!
這似乎不是問題所在。我試着改變它,但沒有效果。它將其提交給MySQL數據庫的SQL查詢更改爲「SELECT Groups.id,... FROM accounts.groups AS Groups WHERE User。UserName ='testuser1'「 – AgileTiger
這似乎沒有問題,我試着改變它(和組到組),但沒有任何作用。它將它提交給MySQL數據庫的SQL查詢更改爲: 「SELECT Groups.id,... FROM accounts.groups AS Groups WHERE User.UserName ='testuser1'」 (注意查詢中單數的「User.UserName」而不是複數) 查詢本身isn不包括表之間正確的連接,所以它不能查詢Groups模型外的任何東西,必須有些東西與連接混淆,但我不知道它可能是什麼。 – AgileTiger