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
모델에서 하나의 역할 유형 '감독자'의 ID를 찾은 다음 사용자 모델에서 다른 쿼리를 수행하고 내 사용자 모델의 조건에서 감독자 역할 레코드의 ID를 전달합니다. like :
$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