Как получить данные на основе условия 2 столбцов в CakePHP

#cakephp #conditional-statements #cakephp-3.0 #query-builder

#cakephp #условные операторы #cakephp-3.0 #конструктор запросов

Вопрос:

Я пытаюсь получить некоторые данные в CakePHP 3.6. Условие основано на 2 столбцах в одной таблице. первый столбец status такой же , как и второй столбец is_done_by_user . Поэтому я хочу получить данные, если статус равен 1 или 2 . Также , если статус есть 3 . Но для статуса 3 должна быть проверка, имеет ли столбец is_done_by_user значение 1 . Итак, последнее, что есть. Я хочу получить все данные с status 1 помощью и 2 . И все данные со статусом 3 где is_done_by_user есть 1 . Я написал запрос, но он работает не так, как я хочу. Вот запрос, который я пробовал до сих пор.

 $query = $this->find('all',[
        'conditions' => [
            'Appointments.is_active' => 1,
            'Appointments.status IN' => (1,2,3),
            'Appointments.is_done_by_user' => 1
        ]
    ]);
 

Может быть, я далек от самого вопроса.

Ответ №1:

Ваш запрос, как написано, найдет все, где все указанные условия верны, что, очевидно, не то, что вы хотите. Я думаю, что это может быть то, что вы ищете?

 $query = $this->find('all',[
    'conditions' => [
        // This must always be true
        'Appointments.is_active' => 1,
        // One of the conditions in this list must be true
        'OR' => [
            // Either the status is 1 or 2
            'Appointments.status IN' => (1,2),
            // Or the status is 3 AND the user is 1
            [
                'Appointments.status' => 3,
                'Appointments.is_done_by_user' => 1,
            ],
        ],
    ]
]);