我在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