Несколько как в запросе с ИЛИ
Мне нужно добавить в эту CakePHP 3 еще один "лайк", запрос должен проверить также в поле last_name. Как я могу это сделать, я хочу соблюдать правила CakePHP 3. Благодарю.
$users = $this->Users
->find()
->where(function ($q) use ($keyword) {
return $q
->like('Users.first_name', "%$keyword%");
// OR ->like('Users.last_name', "%$keyword%");
})
->limit(5)
->toArray();
2 ответа
Решение
Это должно работать, если вы действительно хотите использовать выражения CakePHP
->where(function ($q) use ($keyword) {
return $q
->or_($q->like('Users.first_name', "%$keyword%"))
->like('Users.last_name', "%$keyword%");
})
но вы можете просто сделать
->where([
'OR' => [
'Users.first_name LIKE' => "%$keyword%",
'Users.last_name LIKE' => "%$keyword%"
]
])
Это не лучший способ, но это может сработать:
$users = $this->Users
->find()
->where(function ($q) use ($keyword) {
return $q
->like('Users.first_name', "%$keyword% OR Users.last_name LIKE %$keyword%");
})
->limit(5)
->toArray();
Если это не сработает, этот раздел документации CakePHP может помочь