2

我需要在这个 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();
4

2 回答 2

4

如果您真的想使用 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%"
    ]
])
于 2016-01-04T11:45:58.687 回答
0

这不是最好的方法,但这可能有效:

 $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 文档的这一部分可能会有所帮助

于 2016-01-04T11:35:38.920 回答