Intereting Posts
Объединение сортируемой таблицы с выводом суммы флажка Сериализовать двумерный массив json, отправить два массива или другое? Объединение различных массивов в один массив в результате запроса как переписать основной домен в подпапку без изменения URL-адреса? Как получить дату истечения срока действия из файла сертификата SSL в PHP Переключить загрузочный модальный с помощью php-триггера Композитор: запрошенный пакет php не найден Перезаписать URL-адрес nginx libxml htmlParseDocument игнорирует флаги htmlParseOption Неустранимая ошибка: Uncaught CurlException: 7: не удалось подключиться к хосту, заброшенному в … src / base_facebook.php в строке 887 Как я могу создать новый оператор в PHP? Преобразование числа с запятой в виде десятичной точки для плавания Можно ли просмотреть PHP-код веб-сайта? проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 1 Проверьте, не переданы ли какие-либо переменные в GET

whereHas on multiple relationship – laravel 5.4

У меня несколько таблиц.

Туристический стол

id | title | slug ..... 

Таблица изображений

 id | tour_id | image..... 

Таблица включения

 id | tour_id | inclusion.... 

Таблица исключений

 id | tour_id | exclusion... 

Стол

 id | tour_id | day_summary..... 

Таблица Tour_User (This is a pivot table between tour table and user table)

 tour_id | user_id 

Мне нужно

Я хочу получить информацию о туре с image, inclusion, exclusion, itenary, tour user где image.tour_id равно tour.id и tour.id равно tour.id и exclusion.tour_id равно tour.id и т. Д.

Я определил отношения в Tour Model как

 public function user() { return $this->hasOne(TourUser::class); } public function image() { return $this->hasMany(TourImage::class); } public function inclusion() { return $this->hasMany(TourInclusion::class); } public function exclusion() { return $this->hasMany(TourExclusion::class); } public function highlight() { return $this->hasMany(TourHighlight::class); } public function itenary() { return $this->hasMany(TourItenary::class); } 

Я знаю, что это можно сделать с помощью циклов и условных операторов, где нам нужно запрашивать базу данных несколько раз, но я хочу достичь ее с «жадной загрузкой с красноречивым в Laravel 5.4». Как я могу ее достичь. https://stackoverflow.com/a/21380265/4807414 похоже, что у него есть немного схожая проблема, но она не может решить.

Я попробовал что-то вроде:

 $tour = Tour::where('slug', $slug) ->with('user', 'image', 'itenary', 'inclusion', 'exclusion') ->whereHas('user', function($query) { $query->where('user_id', user()->id); }) <-- user() defind in helper function for logged in user detail ->whereHas('itenary', function($query) { $query->where('tour_id', '21'); }) <-- pass tour id ->whereHas('inclusion', function($query) { $query->where('tour_id', '21'); }) <-- pass tour id ->first();