Laravel获取最新帖子的主题

时间:2019-07-01 20:06:47

标签: php laravel

我正在尝试这样做,获得谁有新帖子的主题顺序列表,所以我在主题模型中创建了这样的关系

public function latest_post()
{
    return $this->hasOne(Post::class)->latest();
}

然后我使用类似的查询

Topic::where('locale',$this->locale)->with('latest_post')->paginate(15)->sortByDesc('latest_post.created_at');

但这给我一个错误

  

Collection :: render不存在

所以我将sort更改为orderBy

Topic::where('locale',$this->locale)->with('latest_post')->orderBy('latest_post','DESC')->paginate(15);

但这也给了我另一个错误

  

“订单子句”中的未知列“ latest_post”

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

嗯。试试这个

$topic = Post::orderBy('created_at','desc')->first()->join('topics', 'topics.id', '=', 'posts.topic_id')->first();

或者在您的帖子模型中:

    public function Topic()
    {
        return $this->belongsTo(Topic::class, 'topic_id');
    }

要获取上一个活动主题:

$topic = Post::orderBy('created_at','desc')->first()->Topic;