我有一个帖子和帖子表。我的关系是:posts.thread_id = threads.id
。
我正在尝试使用包含许多帖子的主题创建一个论坛。我想在帖子的created_at
日期之前订购列表。
所以:我创建了一个新帖子,它现在链接到一个帖子。当我去论坛的主页时,应该使用每个帖子中更新的帖子来命令线程。换句话说,它类似于有人回复堆栈溢出中的线程时,它会到达顶部。
我希望这是有道理的。
我在Thread.php
public function posts()
{
return $this->hasMany('App\Forum\Post', 'thread_id', 'id');
}
Post.php
public function thread()
{
return $this->belongsTo('App\Forum\Thread', 'thread_id', 'id');
}
我的代码来安排主题:
$threads = Thread::all();
它只是按照ID的顺序显示线程。请帮忙。任何帮助都非常感谢。
答案 0 :(得分:1)
试试这个:
public function posts()
{
return $this->hasMany('App\Forum\Post', 'thread_id', 'id')->orderBy('created_at', 'desc');
}
修改强>
实际上,在进一步阅读你的问题后,我认为你所追求的是:
protected $touches = array('threads');
在Post模型中包含此行。这将更新相关模型的时间戳。然后,您可以通过updated_at列对线程进行排序。
答案 1 :(得分:0)
$threads = Thread::latest('updated_at')->take(5)->get()
将“updated_at”字段替换为您要用于检查最新线程的字段。将“5”更改为您想要抓取的数量。或使用paginate()。
答案 2 :(得分:0)
这适用于一对多关系:
$posts = Post::orderBy('created_at', 'desc')->take(10)->get();
在视图中:
@foreach ($posts as $post)
{{ $post->thread->title }}
@endforeach