从 WhereIn 访问关系

我的查询是:


$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');

    }   

当我执行以下操作时,我无法访问 publisher 和 newsTopics:


@foreach($posts as $post)

//doesn't work this way

$post->publisher->name;


//nor like this

$publisher->name;


我怎样才能访问发布者和新闻主题?当我运行这个控制器时,它会查询我想要的内容,但我无权访问它。任何帮助,将不胜感激。谢谢你!


白衣非少年
浏览 78回答 1
1回答

撒科打诨

为了获得模型关系,您必须先在查询中加载它们:$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;
打开App,查看更多内容
随时随地看视频慕课网APP