2

parametersサンプルデータを含む このテーブルがあるシナリオを考えてみましょう。ここに画像の説明を入力

以下で説明するように、これらのデータを 3 つのカテゴリにクエリする必要があります。

query1 = 以下を持つすべてのレコードを取得:param1=param2=param3= 100%この場合から、oupout が最初のレコードになります。このクエリでは問題ありません。

query2 = 以下を持つすべてのレコードを取得します。at least param1 < 80 OR param2 < 80 OR param3 < 80 OR allこの場合、outpout は 2 番目と 3 番目のレコードです。

query3 = 以下を持つすべてのレコードを取得します。at least param1 >= 80 OR param2 >= 80 OR param3 >= 80 BUT NOT ALL EQUAL to 100%この場合、outpout は 4 番目と 5 番目のレコードです。

私は本当にquery2とquery3に在庫があります。以下は、laravelクエリビルダーを使用した私のクエリです。

            $query = DB::table('parameters');                
            if ($query === 1) {
                $query->where('param1', '=', 100)
                      ->where('param2', '=', 100)
                      ->where('param3', '=', 100);
            }elseif ($query === 2) {
                $query->where('param1', '<', 80)
                      ->where('param2', '<', 80)
                      ->where('param3', '<', 80);
            }else{
                $query->whereBetween('param1', [80, 100])
                      ->whereBetween('param2', [80, 100])
                      ->whereBetween('param3', [80, 100]);
            }
            $result = $query->get();

私の質問が明確であることを願っています。よろしくお願いします。

4

2 に答える 2

0

ねえ、1 つのクエリで 3 つの whereBetween() を使用することはできません。また、query2 = では、param1、param2、param3 < 80 に言及しています。クエリは次のようにする必要があります。

$query = DB::table('parameters')
                ->whereBetween('param1', [0, 80])->get();

同じ方法でクエリ 3

$query = DB::table('parameters')
                    ->whereBetween('param1', [80, 100])->get();

すべての列にクエリを使用 すべてのクエリがこのリンクを使用するルールを使用 -リンク

編集された回答

public function getData($id)
    {
        $query = DB::table('parameters')->find($id);

        if($query->param1==100 && $query->param2==100 && $query->param3==100){

        }elseif($query->param1<80 or $query->param2<80 or $query->param3<80){

        }else{

        }

    }

この関数を適切にルーティングすると、出力が得られます:)

于 2016-02-03T17:26:50.570 に答える