我尝试从每个主题中最后一篇文章的创建日期开始对主题进行排序。有谁知道怎么做吗?实际上我很好地恢复了我想要的一切,但不是按正确的顺序。
一个话题有多个帖子,一个帖子属于一个话题。
*:topic =代码中的sujet。topics = lesSujets。
$lesSujets = Sujet::where('jeu_id', $idJeu)->paginate(20);
@foreach ($lesSujets as $sujet)
<tr>
<td><a href="{{route('sujet.show', $sujet->id)}}">{{$sujet->titre}}</a></td>
...
</tr>截图:

我想按上次回复的主题排序。顺序应该是:“你最好的卡片”,“测试1",”aaaa.!“,”坚定的zzzz..“;我们可以通过$sujet->postes-> last ()->created_at (在截图视图中)知道主题的最后答案。
发布于 2017-04-07 19:47:52
您可以使用急切加载来对关系使用orderBy()。我不完全确定你的数据库模式,但我自己会说法语,我只是试着给你一个例子,它与你给我们的内容相匹配并有意义;-)
$sujets = Sujet::where('jeu_id', $idJeu)->with('poste')->orderBy('post.date', 'desc')->get();这应该会得到你所有的"sujets",并会立即加载它的"poste",根据“poste”的任何属性来标记你的订单。
EDIT:我错了,下面是正确的语法:
$sujets = Sujet::where('jeu_id', $idJeu)->with(['poste' => function ($query) {
$query->orderBy('created_at', 'desc');
}])->get();EDIT 2:我想我一开始误解了你在找什么,这个怎么样?只要确保你检查我的代码中的关系名称,这样它就和你的一样,但在我这一端,我在一些虚拟代码上测试了它,它是有效的。
$sujets = Sujet::where('jeu_id', $idJeu)
->with(['poste'])->get()
->sortByDesc('poste.created_at');https://stackoverflow.com/questions/43277230
复制相似问题