2017-01-30 5 views
0

フィルターを作りたいです。ビューに私はこのような二つの入力た:複数の値(配列)を最初の入力で配列やその他のフィールドに値が1つしかない場合、orWhereの使い方は?

<input type="checkbox" id="test{{$index}}" value="{{$prop_category}}" name="prop_category[]"/> 

    <input type="checkbox" id="toggle-on{{ $index }}" value="{{ $prop_type }}" class="singleChb" name="publishing_types" @if ($index == 1) {!! "checked" !!} 

を有することができ、第二にのみ唯一の値を有することができます。

次にコントローラに私はこれを持っている:$options

foreach($options as $key => $option) { 
      if($key != "search" && 
       $key != "page" && 
       $key != "starterResult" && 
       $key != "totalResult") { 

       $query->whereHas($key,function($q) use($option){ 
        $q->orWhere('name', 'like', $option); 
       }); 
      } 
     } 

iは最初の入力の配列を取得し、第二のために私は1つの値を得ます。どうすれば今すぐorWhereを使って、選択した値のすべてを最初の入力からチェックすることができます。今すぐ最初の入力の配列ではなく、最初の入力からの値と秒からの1つの値だけをチェックすることができます。どんなsuggetion?キーで私は関係を持っています。与えられた値が配列に存在する場合、あなたはメソッドwhereIn()使用することができます確認するには

答えて

0

:「名前」列の値が$options配列内に存在する場合

$options = $request->get('prop_category'); 
$keys = array_keys($options); 

foreach($keys as $key){ 

    $query->whereHas($key, function($query) use ($options) { 

     $query->whereIn('name', $options); 

    }); 

} 

whereInをチェックします。

メソッドの参照先のクエリビルダ:https://laravel.com/docs/master/queries#where-clauses

関連する問題