Cakephp запрашивает модель по строгим связанным данным

У меня есть модель X, которая связана с моделью Y.
X имеет много Y.
У есть атрибут «статус».
Я хочу найти все X так, чтобы статус ВСЕХ Y, связанных с X, был равен «активный», т.е. все Y.status == «активный».

Вот упрощенная схема:

Икс

Идентификатор …. имя

0 ….. тест
1 ….. два

Y

идентификатор …. состояние …. x_id

0 ….. активный ….. 0
1 ….. inactive..0
2 ….. активный …. 1
3 ….. активный …. 1

Я хочу, чтобы мой запрос возвращал x с идентификатором 1, так как обе связанные с ним записи Y активны. Я не хочу, чтобы он возвращал x с идентификатором 0, поскольку обе его записи Y не активны.

Я пытался использовать запросы соединения, но они продолжают возвращать неожиданный результат, возвращая оба X.
Я использую Cakephp 2.2.

0

Решение

$data = TableRegistry::get('Y')->find()->where(['x_id' => 1);

//with assosiation
$data = TableRegistry::get('Y')->find()->where(['x_id' => 1])->contain(['X']);

полная документация здесь http://book.cakephp.org/3.0/en/orm/retrieving-data-and-resultsets.html

РЕДАКТИРОВАТЬ

для поиска по статусу вы можете добавить параметр поиска в где ()

$data = TableRegistry::get('Y')
->find()
->where(['x_id' => 1, 'status' => 'active'])
->contain(['X']);

Использование CakePHP 2.x

$data = $this->Y->find('all',
array(
'conditions'=>array('x_id'=>1,'status'=>'active'),
'contain' => array('X')
));
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector