私のデータベースからいくつかのデータを抽出するために、次の要求を行っています。Laravel/Eloquent:雄弁に生成されたSQL文にmissing()を追加しました
$data = Ov::with([
'masters' => function ($query) use ($devicesArrayOnlyLKUAToZero) {
$query->whereIn('macAddress', $devicesArrayOnlyLKUAToZero)
->orWhere('lastKnownUpAt','<>', '0');
}
])->where('ovId', '=', $ovId)->get();
Laravelによって生成された専用のSQLは次のとおりです:(Laravelのdebugbarを参照してください)。
select * from `masterequipments` where `masterequipments`.`id_ov_foreign_key` in ('38') and `macAddress` in ('e8:e7:32:c1:e6:48', 'e8:e7:32:bc:b0:94', 'e8:e7:32:e4:8e:68', 'e8:e7:32:bc:a7:70', '00:e0:b1:fe:ef:a5', 'e8:e7:32:bc:a7:a4', '2c:fa:a2:10:79:74', 'e8:e7:32:b9:6d:1d', '00:e0:b1:ee:58:2d', '00:e0:b1:9d:2c:44', '00:e0:b1:b5:e6:00', '00:e0:b1:72:34:86', '00:e0:b1:fe:ee:8d', '00:e0:b1:79:53:52', '00:e0:b1:fe:f0:bd', '00:e0:b1:75:fa:8a', 'e8:e7:32:98:80:22', '00:e0:b1:75:00:8a') or `lastKnownUpAt` <> '0'
これは間違っているいくつかの括弧はよくSQLに配置されていないため、期待される結果は、要求を生成間違っています2()が見逃されているためです。私が持っているしたいと思います:
select * from `masterequipments` where `masterequipments`.`id_ov_foreign_key` in ('38') and (`macAddress` in ('e8:e7:32:c1:e6:48', 'e8:e7:32:bc:b0:94', 'e8:e7:32:e4:8e:68', 'e8:e7:32:bc:a7:70', '00:e0:b1:fe:ef:a5', 'e8:e7:32:bc:a7:a4', '2c:fa:a2:10:79:74', 'e8:e7:32:b9:6d:1d', '00:e0:b1:ee:58:2d', '00:e0:b1:9d:2c:44', '00:e0:b1:b5:e6:00', '00:e0:b1:72:34:86', '00:e0:b1:fe:ee:8d', '00:e0:b1:79:53:52', '00:e0:b1:fe:f0:bd', '00:e0:b1:75:fa:8a', 'e8:e7:32:98:80:22', '00:e0:b1:75:00:8a') or `lastKnownUpAt` <> '0')
コードのこの部分は、次のSQL文を生成する: ''( '38')で 'masterequipments'場合' masterequipments'.'id_ov_foreign_key' SELECT * FROMと( 'e8:e7:32:bc:a7:a4'、 '2c:e6:48'、'00:e0:b1:fe:ef:a5 ' e:58:2d、100:e0:b1:9d:2c:e2:10:79:74 '、e8:e7:32:b9:6d:1d、 「e0:b1:b5:e6:00」、「00:e0:b1:72:34:86」、「00:e0:b1:fe:ee:8d」、「00:e0: 「lastKnownUpAt' <> '0') '(b1:79:53:52 '、' e8:e7:32:98:80:22 '、'00:e0:b1:75:00:8a' 'まだ問題がある、それは期待されているステーメルではないent。それはより多くの結果を期待どおりに生成します – wawanopoulos
@wawanopoulos:チェック* UPDATE *答え –
まだまだ良いです。これは次のようになります: '' masterequipments''が '' masterequipments''_id_ov_foreign_key''( '38')と '' macAddress''('e8:e7:32:c1:e6:48 '、'e8: 'lastKnownUpAt' <>' 0 '');または 'lastKnownUpAt' <>' 0 ''( 'e7:32:bc:b0:94' 'e8:e7:32 e4:8e:68' e8 e7:32 bc a7:70 ' ( 'e8:e7:32:c1:e6:48'の 'macAddress'、 'e8:e7:32') 'を選択すると、 'lastKnownUpAt' <>' 0 ');または' lastKnownUpAt' <> '0':e8:e7:32:bc:b0:94 '' e8:e7:32:e4:8e:68 '' e8:e7:32:bc: ) '' – wawanopoulos