Выбрать данные из нескольких таблиц — laravel

У меня есть две таблицы, одна записывает данные о транспортном средстве, а другая записывает местоположение транспортного средства в определенные дни.

Выбрать данные из нескольких таблиц — laravelВыбрать данные из нескольких таблиц — laravel

Я хочу взять номер транспортного средства и тип транспортного средства, которое имеет определенную вместимость и его местонахождение на определенную дату.

Пример: все автомобили грузоподъемностью 9 т и их местонахождение на 07.08.2019.

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

Это мой текущий код, и он выводит несколько записей для одного и того же автомобиля.

$vehicles = DB::table('vehicles as v')
            ->leftJoin('current_location as l', 'v.vehicle_id', '=', 'l.vehicle_id')
            ->leftJoin('locations as k', 'l.location_id', '=', 'k.location_id')
            ->select('v.vehicle_id as vehicle_id','v.type as type','v.capacity as capacity', 'k.location as location')
            ->where('v.capacity', $request->capacity)

            // ->where(function($query) use ($request)
            // {
            //     $query->where('l.date', $request->date)
            //           ->orWhere('l.date', null)
            // })

            ->get();

Выбрать данные из нескольких таблиц — laravel

Ожидаемый результат — это список транспортных средств с заданной вместимостью и их местоположениями на заданную дату, если существует запись о местоположении на данную дату.

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Этого легко добиться с помощью Красноречивый.

В Vehicle.php

public function currentLocations()
{
   return $this->hasMany(CurrentLocation::class, 'vehicle_id', 'vehicle_id');
}

В модели CurrentLocation.php

public function location()
{
   return $this->belongsTo(Location::class, 'location_id', 'location_id');
}


Vehicle::with(['currentLocations' => function($q) {
    $q->where('date', request('date'));
}, 'currentLocations.location'])
->where('capacity', request('capacity'))
->get();

Я рад слышать, что это помогло!

Zeshan 15.07.2019 07:30

Другие вопросы по теме