Laravel雄辩的多个WHERE与OR和OR和LIKE?

时间:2016-09-20 12:49:28

标签: laravel eloquent

我在Laravel

中有(或正在尝试制作)此查询

我遇到的问题是$orThose
我想查询LIKE

该领域的数据可以是很多东西,但总有一些关键的工作,如" L3"或者" ICU"在现场。

在这种情况下你可以进行LIKE查询

$matchThese = ['link.hos_id' => $hos_id, 'outcome.otc_otrdischargedate' => $td];
$orThose = ['outcome.otc_outcome' => '@ICU@', 'outcome.otc_outcome' => '@I.C.U@'];

$todaysReferrals = DB::table('link')
->join('daily_link', 'link.lnk_id', '=', 'daily_link.dlk_lnkid')
->join('demographic', 'link.lnk_dmgid', '=', 'demographic.dmg_id')
->join('admission', 'link.lnk_admid', '=', 'admission.adm_id')
->join('or_call', 'admission.adm_calid', '=', 'or_call.cal_id')
->join('admission_score', 'admission.adm_scoreid', '=', 'admission_score.ascore_id')
->join('diagnosis', 'link.lnk_dgnid', '=', 'diagnosis.dgn_id')
->join('outcome', 'link.lnk_otcid', '=', 'outcome.otc_id')
->where($matchThese)
->orWhere($orThose)
->get();

5 个答案:

答案 0 :(得分:15)

likenot like方法中使用%where() orWhere()

->where('column', 'like', '%pattern%')

https://laravel.com/docs/5.3/queries#where-clauses

如果您需要使用多个AND,请执行以下操作:

->where($condition)
->where($anotherCondition)

如果您想使用OR,请执行以下操作:

->where($condition)
->orWhere($anotherCondition)

要合并多个ANDOR执行parameter grouping

->where('name', '=', 'John')
->orWhere(function ($query) {
    $query->where('votes', '>', 100)
          ->where('title', '<>', 'Admin');
})

答案 1 :(得分:2)

您好,请找到同时带有'or'和'and'的条件的参考

餐桌股票

enter image description here

$name='appl';
$type=1;
$stocks = DB::table('stocks')
            ->where('name', 'like', '%' . $name . '%')
            ->orWhere('company_name', 'like', '%' . $name . '%')
            ->where('exchange_id', '=', $type)
            ->get();
$results = json_decode($stocks, true);
print_r($results);

答案 2 :(得分:2)

$matchThese = ['title' => post('title'), 'slug' => post('slug')];
return Blog::where($matchThese)->get();

答案 3 :(得分:1)

在这种情况下,参数分组对于结合使用多个 AND OR 很有用。这里是一些示例,展示了如何实现它。

if ($request->search) {
             
     $users = User::where('type', '=',  'Customer')
        ->where(function ($query) use ($request) {
            $query->where('name', "like", "%" . $request->search . "%");
            $query->orWhere('mobile', "like", "%" . $request->search . "%");
        })->get();   
  }

它描述:

select * from users where type = 'Customer' and ([name as searched] or [mobile as searched])

现在还有另一个示例:

DB::table('users')
            ->where('name', '=', 'Rohan')
            ->orWhere(function ($query) {
                $query->where('votes', '>', 100)
                      ->where('title', '<>', 'Admin');
            })->get();

它描述:

select * from users where name = 'Rohan' or (votes > 100 and title <> 'Admin')

我希望在这些帮助下可以解决问题。

答案 4 :(得分:0)

public function searchData(Request $request)
{
  return Phonebook::where('name', 'like', '%'.$request->SearchQuery.'%')->orWhere('email', 'like', '%'.$request->SearchQuery.'%')->orWhere('phone', 'like', '%'.$request->SearchQuery.'%')->get();
}

我在这里搜索了电话簿模型中的姓名,电子邮件和电话号码,使用其中或其他地方