2017-02-01 5 views
1

[OK]を私は、ビューのチェックボックスの6を持っている:whereInを<=ですか?

<input type="checkbox" name="rooms[]" id="room1" value="1" />1 
<input type="checkbox" name="rooms[]" id="room2" value="2" />2 
<input type="checkbox" name="rooms[]" id="room3" value="3" />3 
<input type="checkbox" name="rooms[]" id="room4" value="4" />4 
<input type="checkbox" name="rooms[]" id="room5" value="5" />5 
<input type="checkbox" name="rooms[]" id="room6" value="6" />6+ 

ユーザーは、それらのすべてを確認することができますが、例えば、ユーザチェックが最初の値が1と値が6+で最後のものであるところとき、私は問題を抱えています。ユーザーが部屋の値が1で、値がroom >= 6のすべてのレコードを取得したいことをチェックするとき。どのように私はそれを行うことができますどのような提案?

私はこれを試しましたが、これはユーザーが最後にチェックすると機能しません。

$value = 6; 
    if (!in_array($value, $option)) { 
      $query->whereIn('rooms',$option 
     } 
      else{ 
       $query->where('rooms','>=',$value); 
     } 
+0

を2以上、または6以上である。 –

+0

いいえ彼が1,2と6+を選択した場合、部屋の値が1,2で6以上のすべてのレコードを取得します。 – None

+0

部屋は1,2、および= 6同時にできません。私はあなたがORを意味しているとは思わないとAND –

答えて

1

これはあなたのために働く場合は試してみてください:

$value = 6; 
if (!in_array($value, $option)) { 
    $query->whereIn('rooms',$option); 
} 
else{ 
    $query->whereIn('rooms',$option)->orWhere('rooms', '>=', $value); 
} 
+0

私は1,2,3と6 +私はすべてのレコードを取得し、私は値560のいくつかの部屋を持っているので、私はすべてのレコードを取得する必要はありませんが正常に動作していない – None

+0

あなたはこのクエリでも値5の部屋を手に入れますか? –

+0

私はこれを試してみて、うまく働いています。私は1,2,3,4,5,6,7という値を持つレコードを持っています。そして、私のオプション配列は1,2,3,6を持っています。そして、値1,2,3,6,7(1、 2,3選択されたオプションと6,7 ie> = 6) –

0

このお試しください:彼は1,2を選択して、部屋の値が1かのいずれかです6+彼はレコードを取得する場合ので

$value = 6; 
    if (!in_array($value, $option)) { 
      $query->whereIn('rooms',$option 
    } else { 
      $query->whereHas(
       'rooms', 
       function($query) use ($value){ 
        $query->where('rooms', '>=', $value) 
       }); 
    } 
関連する問題