我正在循环查看某个帖子的作者发表的所有评论。
foreach($post->user->comments as $comment)
{
echo "<li>" . $comment->title . " (" . $comment->post->id . ")</li>";
}
这给了我
I love this post (3)
This is a comment (5)
This is the second Comment (3)
如何按post_id排序,使上面的列表按3,3,5排序
6条答案
按热度按时间fae0ux8s1#
可以使用查询函数扩展关系:
[edit评论后]
默认用户模型+简单控制器示例;在获取注解列表时,只需应用基于Input::get()的orderBy()。(确保执行一些输入检查;))
lmvvr0a82#
我相信你也可以做到:
它允许你在每条相关的评论记录上运行任意的逻辑,你可以在其中包含如下内容:
7vhp5slm3#
使用
sortBy...
可能会有所帮助。$users = User::all()->with('rated')->get()->sortByDesc('rated.rating');
rqqzpn5f4#
试试这个解决方案。
您可以根据数据库结构更改
join()
中的列名。uyhoqukh5#
我在一个关系字段上做了一个trait to order。我在有状态关系的网店订单上遇到了这个问题,状态有一个名称字段。
Example of the situation
用雄辩模型的"连接"排序是不可能的,因为它们不是连接。它们是在第一个查询完成后运行的查询。所以我做了一个小黑客来读取雄辩的关系数据(如表,连接键和其他地方,如果包括在内),并将其连接到主查询上。这只适用于一对一的关系。
第一步是创建一个trait并在模型上使用它。在trait中你有两个功能。第一个:
这是读取有说服力的数据的"检测"功能。
第二个:
这是一个向模型添加作用域以在查询中使用的函数。现在只需在模型上使用trait,就可以像这样使用它:
u59ebvdq6#