我對CakePHP很陌生(昨晚開始),並且遇到查詢問題。關於與CakePHP模型的多個關聯的查詢
我的模型的工作原理是這樣的:
Classgroups < < hasAndBelongsTo >>用戶< < hasAndBelongsTo >> PermissionsGroups
基本上是一個Classgroup是由用戶的負載,每個用戶都屬於某個權限組。該組定義了他們的用戶類型以及他們的權限。
現在我需要做一個查詢,我得到屬於某個PermissionGroup的所有用戶,但是我正在從ClassgroupsController中進行操作。
但是每當我試圖做到這一點:
$this->Classgroup->User->find('list', array(
'fields' => array('User.surname_firstname'),
'order' => array(
'User.surname_firstname'
),
'conditions' => array(
'PermissionGroup.permissions' => '10'
)
)
我得到這個錯誤:
Column not found: 1054 Unknown column 'PermissionGroup.permissions' in 'where clause'
因爲我在ClassgroupController我就好像集團字段不能待觀察,但我會假設因爲用戶與PermissionGroup關聯應該沒問題。我已經建立了3個模型之間的關聯,但問題似乎是查詢對模型沒有足夠「深入」。
我也嘗試將查找的遞歸值設置爲2,3和4.從我讀過的內容中,我認爲這可能不是一個好主意,Containable更好但肯定它應該至少可以工作?
我還應該指出,這些關聯是一種方式。我只將它們添加到我需要的模型中。所以Classgroups有一個關聯到用戶和用戶有一個關聯PermissionGroup
我在做什麼明顯錯誤?或者我誤解了一個CakePHP概念? 感謝
更新:對於第二次我看到有人說我應該使用連接,像這樣:
'joins'=>array(
array(
'table'=>'rooms',
'alias'=>'Room',
'type'=>'inner',
'conditions'=>array(
'Room.hotel_id'=>'Hotel.id'
)
)
但我這做一種過時的感覺......我我也試過使用包含如下:
'contain' => array(
'Group' => array(
'conditions' => array(
'Group.name' => '10'
)
)
)
但它沒有工作,我仍然得到了所有的用戶。
加入可能是最好的選擇......你爲什麼要加入房間?你不應該加入PermissionGroup嗎? –
對不起,這是我在別處找到的我從未改變的代碼片段。 – carlmango11