341

どう言えばいいのWHERE (a = 1 OR b =1 ) AND (c = 1 OR d = 1)

より複雑なクエリの場合、生の SQL を使用する必要がありますか?

4

14 に答える 14

561

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);
});
于 2013-06-08T01:38:31.787 に答える
111

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);
});
于 2014-03-04T13:31:56.250 に答える
27

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);
});

これは私の結果です: ここに画像の説明を入力

于 2015-09-13T06:29:49.380 に答える
7

$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);
        })
于 2016-08-07T06:50:39.833 に答える
7

最初の or 条件を照会して、後で別の or 条件を適用することもできます

$model = Model::where('a',1)->orWhere('b',1);

$modelその変数に別の条件を適用する

$model1 = $model->where('c',1)->orWhere('d',1)->get();
于 2015-04-22T10:31:40.873 に答える
7

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();
于 2018-09-21T18:39:03.260 に答える
1

以下を使用できます。

Model::where('table_column', 'value')->orWhere('table_column', 'value')->get()
于 2022-01-20T10:54:25.747 に答える