У меня есть модель User
и модель Role
в приложении CakePHP. Связь между этими двумя моделями заключается в следующем: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_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 $ roleTo Role» Таким образом, в этом случае было бы правильно запросить пользователя и оставить его в роли. Он не должен создавать отдельный запрос здесь, если он настроен правильно. – mark
@mark - Я упомянул, что он может использовать Joins (# 2). Или он мог бы просто отменить запрос и использовать Containable. Множество вариантов. – Dave