我在CakePHP應用程序中有一個模型User
和一個模型Role
。這兩種模式之間的關聯是:cakephp查找關聯模型的查詢條件
User $belongsTo Role
Role $hasMany User
我想要在User
模型查詢查找所有用戶具有特定角色(假設角色主管)。我做了我這樣的查詢:
$supervisors = $this->User->find('all', array(
'contain' => array(
'Role' => array(
'conditions' => array(
'Role.name' => 'Supervisor'
)
)
)
));
但上述查詢返回我的用戶表中的所有用戶。它不會僅返回具有角色Supervisor的用戶。我知道如果我執行兩個查詢,一個在Role
模型上查找角色類型'Supervisor'的id,然後在User模型上執行另一個查詢,並在我的用戶模型中的條件中傳遞超級用戶角色記錄的ID像這樣:
$supervisor_role_id = $this->Role->field('id', array('Role.name' => 'Supervisor'));
$supervisors = $this->User->find('all', array(
'conditions' => array(
'User.role_id' => $supervisor_role_id
)
));
以上查詢會給我想要的結果。但我不想做2個查詢來做到這一點。爲什麼沒有第一種方法工作。請任何想法嗎?
謝謝
「User $ belongsTo Role」所以在這種情況下,查詢用戶並離開角色實際上是正確的。如果配置正確,它不應該在這裏創建一個單獨的查詢。 – mark
@mark - 我提到他可以使用連接(#2)。或者,他可以顛倒查詢並使用Containable。很多選擇。 – Dave