Как можно добавить orWhere условия в cakephp3.7 потому что в 3.7 orWhere не рекомендуется

Или где условия в cakephp3.7 потому что в 3.7 или где не рекомендуется

select * from Users where Users.state = 'UP' Or (Users.status =1 and Users.role=2)

1 ответ

Вы можете использовать либо OR ключевое слово (и для лучшей читаемости необязательно AND ключевое слово) с синтаксисом вложенного массива:

$query->where([
    'OR' => [
        'Users.state' => 'UP',
        'AND' => [
            'Users.status' => 1,
            'Users.role' => 2
        ]
    ]
]);

или выражения:

$query->where(function (
    \Cake\Database\Expression\QueryExpression $exp,
    \Cake\ORM\Query $query
) {
    return $exp->or_([
        'Users.state' => 'UP',
        $query->newExpr()->and_([
            'Users.status' => 1,
            'Users.role' => 2
        ])
    ]);
});

Смотрите также

Другие вопросы по тегам