#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,
],
],
]
]);