Отношения доступа от WhereIn - PullRequest
1 голос
/ 28 мая 2020

Мой запрос:

$posts = Post::
    whereIn('ID', (
    NewsTag::
             orderBy('post_date','desc')->with('publisher','newsTopics')
                 ->paginate(12)->pluck('post_id')))
             ->get();

Newstag. php модель выглядит так:

            public function newsTopics() {
        return $this->hasOne('App\Models\NewsTopics', 'post_id', 'post_id');
    }

    public function publisher() {
        return $this->hasOne('App\Models\Publisher', 'id', 'publisher_id');
    }   

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

@foreach($posts as $post)
//doesn't work this way
$post->publisher->name;

//nor like this
$publisher->name;

Как я могу получить доступ к темам издателя и новостей? Когда я запускаю этот контроллер, он запрашивает то, что я хочу, но у меня просто нет доступа к нему. Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 28 мая 2020

, чтобы получить отношение модели, вы должны сначала загрузить их в свой запрос:

$posts = Post::with('newsTopics','publisher')->
    whereIn('ID', (
    NewsTag::
             orderBy('post_date','desc')->with('publisher','newsTopics')
                 ->paginate(12)->pluck('post_id')))
             ->get();

, тогда вы можете получить доступ к своему отношению, например:

@foreach($posts as $post)

$publisherName= $post->publisher->name;

подробнее в:

https://laravel.com/docs/7.x/eloquent-relationships#eager -загрузка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...