首页 >后端开发 >php教程 >如何在 Laravel 中排序 Eloquent 关系?

如何在 Laravel 中排序 Eloquent 关系?

DDD
DDD原创
2024-11-24 05:02:09538浏览

How Can I Order Eloquent Relationships in Laravel?

Laravel:使用 orderBy 对关系进行排序

在 Laravel 中处理关系时,以特定方式对结果进行排序可能很有用。例如,您可能希望按时间顺序显示与帖子相关的评论。

考虑以下循环,它会迭代特定帖子的作者发布的所有评论:

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 对列表进行排序,您可以将评论关系扩展为orderBy 函数:

public function comments()
{
    return $this->hasMany('Comment')->orderBy('column');
}

现在,当您循环浏览评论时,它们将以所需的顺序显示:

This is the second Comment (3)
I love this post (3)
This is a comment (5)

或者,您可以使用更灵活的方法orderBy 函数作为输入,类似于 Input::get() 输入检查示例:

class User
{
    public function comments()
    {
        return $this->hasMany('Comment');
    }
}

class Controller
{
    public function index()
    {
        $column = Input::get('orderBy', 'defaultColumn');
        $comments = User::find(1)->comments()->orderBy($column)->get();

        // use $comments in the template
    }
}

通过传递 orderBy 列作为输入,您可以根据用户输入动态对评论进行排序。请记住出于安全目的实施适当的输入检查。

以上是如何在 Laravel 中排序 Eloquent 关系?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn