我尝试从创建每个主题的最后一篇文章之日起对主题进行排序。 有谁知道怎么做? 实际上我恢复了我想要的一切,但不是以正确的顺序。
一个主题有很多poste和一个poste属于一个主题。
*:代码中的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”,“aaaaa ..!”,“[Firm] zzzz ..”; 我们可以通过$ sujet-&gt; postes-&gt; last() - &gt; created_at(截图视图)知道主题的最后一个答案。
答案 0 :(得分:0)
您可以使用预先加载来orderBy()
使用关系。我不完全确定你的数据库模式,但是我自己说法语,我会试着给你一个与你给我们的东西匹配并有意义的例子; - )
$sujets = Sujet::where('jeu_id', $idJeu)->with('poste')->orderBy('post.date', 'desc')->get();
这应该得到你所有的“sujets”,并且会急切地加载它的“poste”,让任何“poste”的财产让你订购。
编辑:我错了,这是正确的语法:
$sujets = Sujet::where('jeu_id', $idJeu)->with(['poste' => function ($query) {
$query->orderBy('created_at', 'desc');
}])->get();
编辑2 :我想我最初误解了你在找什么,这个怎么样?只要确保你检查我的代码中的关系名称,所以它真的和你的一样,但在我的最后,我在一些虚拟代码上测试它并且它有效。
$sujets = Sujet::where('jeu_id', $idJeu)
->with(['poste'])->get()
->sortByDesc('poste.created_at');