Laravel: выбор данных на основе других данных в другой таблице - PullRequest
0 голосов
/ 09 июня 2019

Я работаю над системой управления автобусной станцией.и я пытаюсь поставить автобус в очередь по расписанию.так что я хочу это:

  • я хочу отобразить все автобусы конкретной станции, которые не находятся в очереди определенного расписания.

    - например, если на станции 5 автобусов, то два из них находятся в очереди определенного расписания, я хочу отобразить все остальные 3 шины, которые должны быть выбраны в очередь.

, так что здесьэто таблица расписаний .enter image description here

Таблицы очередей enter image description here

Таблица автобусов

enter image description here

Таблица станций

enter image description here

так я и сделалкак это

public function getBusQueue(Request $request)
{
    $id = $request->id; // id of the targert schedule

    // getting the target station id;
    $schedule = Schedule::find($id);
    $stations_id = $schedule->station_id;

    // getting the buses that are not in queues table
    $buses = DB::table("buses")->select('*')
                ->whereNotIn('bus_number',function($query) {
                    $query->select('bus_number')->from('queues');
                })
                ->where('Schedule_id', $id)
                ->where('station_id', $stations_id)
                ->get();

    $data = $buses;  
    return Response()->json($data);
}

1 Ответ

1 голос
/ 09 июня 2019

Если я правильно понимаю, соответствующее расписание в этом запросе относится к очереди, а не к шине.

(Кроме того, вы, похоже, неправильно набрали имя столбца schedule_id в таблице buses. В настоящее время оно называется schedual_id.)

Попробуйте изменить запрос следующим образом:

$buses = DB::table("buses")->select('*')
    ->whereNotIn('bus_number',function($query) use($id) {
        $query->select('bus_number')
            ->from('queues')
            ->where('schedule_id', $id);
    })
    ->where('station_id', $stations_id)
    ->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...