どう言えばいいのWHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)
より複雑なクエリの場合、生の SQL を使用する必要がありますか?
どう言えばいいのWHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)
より複雑なクエリの場合、生の SQL を使用する必要がありますか?
Logical Grouping (Laravel 7.x / 4.2 )を利用します。あなたの例では、次のようになります。
Model::where(function ($query) {
$query->where('a', '=', 1)
->orWhere('b', '=', 1);
})->where(function ($query) {
$query->where('c', '=', 1)
->orWhere('d', '=', 1);
});
Laravel 4でa,b,c,dのパラメータを使いたい場合
Model::where(function ($query) use ($a,$b) {
$query->where('a', '=', $a)
->orWhere('b', '=', $b);
})
->where(function ($query) use ($c,$d) {
$query->where('c', '=', $c)
->orWhere('d', '=', $d);
});
laravel 4 で括弧を使用したい場合、 return を忘れないでください
Laravel 4 では (少なくとも) 例のように $a, $b を括弧で囲む必要があります
$a = 1;
$b = 1;
$c = 1;
$d = 1;
Model::where(function ($query) use ($a, $b) {
return $query->where('a', '=', $a)
->orWhere('b', '=', $b);
})->where(function ($query) use ($c, $d) {
return $query->where('c', '=', $c)
->orWhere('d', '=', $d);
});
$a、$b、$c、$d はクエリによって動的な値にすることができます
->where(function($query) use ($a, $b)
{
$query->where('a', $a)
->orWhere('b',$b);
})
->where(function($query) use ($c, $d)
{
$query->where('c', $c)
->orWhere('d',$d);
})
最初の or 条件を照会して、後で別の or 条件を適用することもできます
$model = Model::where('a',1)->orWhere('b',1);
$model
その変数に別の条件を適用する
$model1 = $model->where('c',1)->orWhere('d',1)->get();
Modalを使わない別の方法
データベース: 株 列:id,name,company_name,exchange_name,status
$name ='aa'
$stocks = DB::table('stocks')
->select('name', 'company_name', 'exchange_name')
->where(function($query) use ($name) {
$query->where('name', 'like', '%' . $name . '%')
->orWhere('company_name', 'like', '%' . $name . '%');
})
->Where('status', '=', 1)
->limit(20)
->get();
以下を使用できます。
Model::where('table_column', 'value')->orWhere('table_column', 'value')->get()