我在 CakePHP 应用程序中有一个模型User
和一个模型Role
。两种模型之间的关联如下:
User $belongsTo Role
Role $hasMany User
我想对User
模型进行查询以查找具有特定角色的所有用户(比如说角色主管)。我做了这样的查询:
$supervisors = $this->User->find('all', array(
'contain' => array(
'Role' => array(
'conditions' => array(
'Role.name' => 'Supervisor'
)
)
)
));
但是上面的查询返回了我的用户表中的所有用户。它不只返回角色为 Supervisor 的用户。我知道如果我做两个查询,一个在Role
模型上查找角色类型“主管”的 id,然后在用户模型上进行另一个查询,并在我的用户模型的条件中传递主管角色记录的 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 个查询来做到这一点。为什么第一种方法不起作用。请问有什么想法吗?
谢谢