使用 OR 的查询中的多个 like
Multiple like in a query with OR
我需要在此 cakephp 3 中添加另一个 "like",查询还必须检查 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();
这不是最好的方法,但是可能可行:
$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 Documentation 的这一部分可能会有所帮助
如果你真的想使用 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%"
]
])
我需要在此 cakephp 3 中添加另一个 "like",查询还必须检查 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();
这不是最好的方法,但是可能可行:
$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 Documentation 的这一部分可能会有所帮助
如果你真的想使用 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%"
]
])