3 回答

TA貢獻1817條經驗 獲得超14個贊
這在 Laravel 中處理起來很棘手。您的WHERE子句中的邏輯基本上是(A and B) or C,其中條件A可以由NOT EXISTSMySQL 中的子查詢表示。
$drivers = DB::table('Driver d')
->where(function($query1) {
return $query1
->whereNotExists(function ($query2) {
$query2->select(DB::raw(1))
->from('buses b')
->whereRaw('d.driver_number = b.driver_number');
})
->where('station_id', '=', '2');
})
->orWhere('driver_number', '=', 'Dr_02');
->get();

TA貢獻1858條經驗 獲得超8個贊
您可以嘗試使用
$task_without_due_date = \DB::select(\DB::raw("SELECT * FROM drivers where driver_number NOT IN (SELECT driver_number FROM buses) AND station_id = '.$station_id.' OR driver_number = '.$bus->Driver_id.'"));

TA貢獻1843條經驗 獲得超7個贊
試試這個,
$result = DB::table('drivers')
->whereNotIn('driver_number', function($q){
$q->select('driver_number')->from('buses');
})
->where('station_id', '=', 2)
->where('driver_number', '=', 'Dr_02')
->get();
- 3 回答
- 0 關注
- 159 瀏覽
添加回答
舉報