【发布时间】:2013-11-03 01:22:12
【问题描述】:
我在 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 个查询来做到这一点。为什么第一种方法不起作用。请问有什么办法吗?
谢谢
【问题讨论】:
标签: php cakephp cakephp-1.3 php-5.3