Вложенные Eager Загрузка Specifi c Столбцы - PullRequest
1 голос
/ 08 апреля 2020

когда я делаю это

$category = NewsCategory::whereSlug($slug)->with('news.category:id,title,slug')->firstOrFail();

, тогда у меня появляются следующие запросы

select * from `news_categories` where `slug` = 'novinki' limit 1
select * from `news_posts` where `news_posts`.`category_id` in (2) and `news_posts`.`deleted_at` is null
select `id`, `title`, `slug` from `news_categories` where `news_categories`.`id` in (2)

, но я хочу загрузить определенные c столбцы также в первом новостном отношении, и у меня возникает ошибка, если Мне это нравится

$category = NewsCategory::whereSlug($slug)->with('news:id,title,image.category:id,title,slug')->firstOrFail();

Как правильно получить этот запрос?

select * from `news_categories` where `slug` = 'novinki' limit 1
select `id`, `title`, `image` from `news_posts` where `news_posts`.`category_id` in (2) and `news_posts`.`deleted_at` is null
select `id`, `title`, `slug` from `news_categories` where `news_categories`.`id` in (2)```

1 Ответ

1 голос
/ 09 апреля 2020

Я бы поместил загруженные отношения в массив

Попробуйте:

$category = NewsCategory::whereSlug($slug)
              ->with([
                  'news:id,title,image,category_id,deleted_at',
                  'news.category:id,title,slug'
              ])->firstOrFail();

Или, в качестве моего личного предпочтения, используйте замыкания для расширения запроса следующим образом:

$category = NewsCategory::whereSlug($slug)
              ->with([
                  'news' => function($query){
                      $query->select('id','title','image','category_id','deleted_at');
                   },
                  'news.category' => function($query){
                      $query->select('id','title','slug');
                   }
              ])->firstOrFail();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...