首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LARAVEL - Order by on relationship propriety

LARAVEL - Order by on relationship propriety
EN

Stack Overflow用户
提问于 2017-04-07 19:40:45
回答 1查看 62关注 0票数 0

我尝试从每个主题中最后一篇文章的创建日期开始对主题进行排序。有谁知道怎么做吗?实际上我很好地恢复了我想要的一切,但不是按正确的顺序。

一个话题有多个帖子,一个帖子属于一个话题。

*:topic =代码中的sujet。topics = lesSujets。

代码语言:javascript
复制
$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 (在截图视图中)知道主题的最后答案。

EN

回答 1

Stack Overflow用户

发布于 2017-04-07 19:47:52

您可以使用急切加载来对关系使用orderBy()。我不完全确定你的数据库模式,但我自己会说法语,我只是试着给你一个例子,它与你给我们的内容相匹配并有意义;-)

代码语言:javascript
复制
$sujets = Sujet::where('jeu_id', $idJeu)->with('poste')->orderBy('post.date', 'desc')->get();

这应该会得到你所有的"sujets",并会立即加载它的"poste",根据“poste”的任何属性来标记你的订单。

EDIT:我错了,下面是正确的语法:

代码语言:javascript
复制
$sujets = Sujet::where('jeu_id', $idJeu)->with(['poste' => function ($query) {
    $query->orderBy('created_at', 'desc');
}])->get();

EDIT 2:我想我一开始误解了你在找什么,这个怎么样?只要确保你检查我的代码中的关系名称,这样它就和你的一样,但在我这一端,我在一些虚拟代码上测试了它,它是有效的。

代码语言:javascript
复制
$sujets = Sujet::where('jeu_id', $idJeu)
->with(['poste'])->get()
->sortByDesc('poste.created_at');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43277230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档