2016-10-08 4 views
0

あなたがwhere in句のwhereInメソッドを使用して$registered_serial_numbersは、値の配列であることを確認してください雄弁複雑なクエリ

$registered_passes = Pass::where("updated_at", $passesUpdatedSince)->whereIn('serial_number',$registered_serial_numbers)->get();

答えて

0

クエリは、このようなものでなければなりません。

私の悪い、誤読。クロージャを使用してwhereRaw()

$registered_passes = Pass::whereIn('serial_number', $registered_serial_numbers)->whereRaw('updated_at IS NULL OR updated_at >= ?', $passesUpdatedSince)->get(); 

2)を使用して

1):それを行うの

$registered_passes = Pass::where('serial_number',$registered_serial_numbers)->whereRaw('updated_at IS NULL OR updated_at >= ?', $passesUpdatedSince)->get(); 
+0

を見てください、との問題「updated_atのは、nullであるかupdated_atの> = $ passesUpdatedSince」whereRawでアポストロフィで –

+1

()変数は評価されません... –

+0

もちろん、そこに同じものを貼り付けただけです。編集されました。 – bytesarelife

1

二つの方法:あなたは、シリアル番号と罰金している場合は、ちょうどこのようwhereRawを行います

$registered_passes = Pass::whereIn('serial_number', $registered_serial_numbers)->where(function($query){ 
$query->whereNull('updated_at')->orWhere('updated_at', '>=', $passesUpdatedSince);})->get(); 

https://laravel.com/docs/5.3/queries#where-clauses

AND(OR)を行うには

私はシリアル値で問題がない「パラメータグループ」セクション