Несколько как в запросе с ИЛИ

Мне нужно добавить в эту 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%"]
])
4

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

Это не лучший способ, но это может быть Работа:

 $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 Документация может помочь

0