2017-08-23 8 views
0

私の要求に複数の条件節を入れようとしていますが、私はこのエラーを受け取ります。Laravel/Eloquent:要求の複数の条件節

(1/1) ErrorException 
mb_strpos() expects parameter 1 to be string, object given 

コード:

$data = Ov::with([ 
      'ovLicenses', 
      'masters' => function ($query) use ($devicesArrayOnlyLKUAToZero) { 
       $query->whereIn('macAddress', $devicesArrayOnlyLKUAToZero); 
      }, function ($query) { 
       $query->orWhere('lastKnownUpAt','<>', '0'); 
      }, 
      'masters.licenses', 
      'masters.equipment', 
      'masters.slaveEquipments.equipment', 
      'wireless'=> function ($query) use ($devicesArrayOnlyLKUAToZero) { 
       $query->whereIn('macAddress', $devicesArrayOnlyLKUAToZero); 
      }, function ($query) { 
       $query->orWhere('lastKnownUpAt','<>', '0'); 
      }, 
      'wireless.licenses', 
      'wireless.equipment' 
     ])->where('ovId', '=', $ovId)->get(); 
+0

を使用していない理由は理由がありますlastKnownUpAt '、' <> '、' 0 '); } – pseudoanime

+0

@pseudoanimeはい、ありがとうございます。 – wawanopoulos

答えて

0

あなたが「{ $ query-> orWhere(関数の後にカンマ($クエリ)を逃した

$data = Ov::with([ 
      'ovLicenses', 
      'masters' => function ($query) use ($devicesArrayOnlyLKUAToZero) { 
       $query->whereIn('macAddress', $devicesArrayOnlyLKUAToZero) 
         ->orWhere('lastKnownUpAt','<>', '0'); 
      }, 
      'masters.licenses', 
      'masters.equipment', 
      'masters.slaveEquipments.equipment', 
      'wireless'=> function ($query) use ($devicesArrayOnlyLKUAToZero) { 
       $query->whereIn('macAddress', $devicesArrayOnlyLKUAToZero) 
         ->orWhere('lastKnownUpAt','<>', '0'); 
      }, 
      'wireless.licenses', 
      'wireless.equipment' 
     ])->where('ovId', '=', $ovId)->get(); 
+0

私は常にこのコードを作成しましたが、このコードに問題があります。orWhereステートメントを適用すると、対応するマスターの完全なリストも返されます一番下のどこに(ovId ..)節があるのでしょうか。 macAddressが含まれているマスターのリストを、使用されているdeviceArrayに戻し、lastKnownUpAtが0以外の場合は、どうすればよいですか? – wawanopoulos

+0

さらに、私はこのコードを行うときに、メモリを超えるエラーが発生することがあります。 (私が前にwhereまたはwhere節を適用しないですべてのマスターをロードするor closeを使用して前に説明したため) – wawanopoulos