雄辩的查询哪里和条件或哪里和不同的条件

Posted

技术标签:

【中文标题】雄辩的查询哪里和条件或哪里和不同的条件【英文标题】:Eloquent query where and condition OR where and different condition 【发布时间】:2019-05-07 13:12:40 【问题描述】:

我需要创建一个查询来搜索 (first name = foo AND last name = bar) OR (first name = bar and last name = foo)。这真的令人沮丧,无法正常工作。我很感激任何建议。

$this->_records->where('first_name','LIKE', $params[0])->where('last_name', 'LIKE', $params[1])->orWhere('first_name','LIKE', $params[1])->where('last_name', 'LIKE', $params[0]);

【问题讨论】:

【参考方案1】:

您可以像这样将它们组合在一起:

$this
    ->_records()
    ->where(function ($query) use ($params) 
        return $query->where('first_name', 'LIKE', $params[0])
            ->where('last_name', 'LIKE', $params[1]);
    )
    ->orWhere(function ($query) use ($params) 
        return $query->where('first_name', 'LIKE', $params[1])
            ->where('last_name', 'LIKE', $params[0]);
    )
    ->get();

【讨论】:

【参考方案2】:

你可以试试这个查询,它允许搜索多个字段。

$this->_records
     ->whereRaw("concat(first_name, ' ', last_name) like '%".$params."%' ")
     ->orWhereRaw("concat(last_name, ' ', first_name) like '%".$params."%' ")
     ->get();

【讨论】:

以上是关于雄辩的查询哪里和条件或哪里和不同的条件的主要内容,如果未能解决你的问题,请参考以下文章

水线ORM(sails.js)“在哪里或”查询

雄辩哪里不问?

Laravel 雄辩的查询与条件下另一个表中的值的总和

MySql查询在哪里使用超过2个条件

怎样在Excel中使用条件格式和查询

如何包装 Laravel 雄辩的条件来创建以下查询