検索

ホームページ  >  に質問  >  本文

php - laravelで複数のファジー条件付きクエリを結合するにはどうすればよいですか?

フロントエンドからフォーム配列を受け取ったとします:
$input = $request->input();
には、電子メール、名前、年齢、性別の 4 つの値が含まれています。ユーザーが電子メールと名前を入力した場合、データ テーブルは、ユーザーが入力した値に基づいてクエリされる必要があります。 、年齢と性別を入力すると、クエリがぼやけてしまいます。
しかし、ここで問題が発生します。ユーザーはこれら 4 つの入力のいずれかを入力する可能性があります。または、おそらく 4 です。その後、クエリ コンストラクターを使用すると、それぞれの値が存在するかどうかを判断してからコンストラクターを記述することができなくなります。結局、ファジー クエリと正確なクエリの書き方が異なります。たとえば、今、フィールドが 2 つあるとします。 (メールアドレスと名前) にはファジークエリが必要です。Laravel のファジークエリのコンストラクターは次のように記述されます:
->where('email', 'LIKE', $input['email'])
次に、電子メールと名前がプログラム内に存在するかどうかを判断し、クエリ コンストラクターを結合する必要がありますか?
アイデアは次のとおりです。

リーリー

ファジークエリのフィールドが 10 個もある場合、コードの量が多すぎてコンストラクターがまったく使用できません。
次のような別の方法があれば教えてください。

リーリー

次に、
->where( 'LIKE', $where) を使用して、存在するかどうかのすべての状況を 1 行に含めます。
インターネットでは、他の記述方法が推奨されています。
$where['email'] = ['like', $input['email']] ですが、laravel5.1 は使用できません。
複数条件のあいまいクエリと非あいまいクエリを解決する良い方法はありますか?

ringa_leeringa_lee2858日前1777

全員に返信(5)返信します

  • PHP中文网

    PHP中文网2017-05-16 12:04:58

    Laravel は where に匿名関数を渡すことができます。

    この匿名関数で判断できます。

    例えばこんな感じ

    リーリー

    こうすることで、コンストラクターの構造を壊さずに適切な判断を行うことができます。

    返事
    0
  • 某草草

    某草草2017-05-16 12:04:58

    私は 5.1 を使用したことがありませんが、5.4 には when メソッドがあります。例:

    リーリー

    これは、$nameが空でない場合、次の関数

    が実行されることを意味します。

    5.1にも同様の方法があるか確認してください

    返事
    0
  • 滿天的星座

    滿天的星座2017-05-16 12:04:58

    クエリ ビルダーと言えばwhere()方法是返回$this -- つまり、クエリを連続して書くことができますが、連続して書かなければならないというわけではありません。

    フィールドが多い場合、forループを書いても大丈夫ですか?:

    リーリー

    返事
    0
  • 高洛峰

    高洛峰2017-05-16 12:04:58

    リーリー

    返事
    0
  • 大家讲道理

    大家讲道理2017-05-16 12:04:58

    あなたが判断するのか、フレームワークが判断するのか、あなたが判断しなければなりません。ファジークエリのフィールドが 10 個ある場合、mysql は代わりに検索エンジンを使用して処理できますか?

    返事
    0
  • キャンセル返事