【问题标题】:Laravel Pagination Latest Rows (Reversed)Laravel 分页最新行(反向)
【发布时间】:2017-02-02 20:37:33
【问题描述】:

在任何地方都找不到关于如何在分页中返回最新行(每个 created_at 列)的示例?

我当前的代码是:

$messages = Message::where('to_id', $user->id)
    ->where('is_read', false)
    ->paginate(10);

我想按最近对结果进行排序。我该怎么做?

【问题讨论】:

    标签: php laravel eloquent


    【解决方案1】:

    您可以使用latest() 方法,它是orderBy('created_at', 'desc') 的快捷方式

    $messages = Message::where('to_id', $user->id)
        ->where('is_read', false)
        ->latest()
        ->paginate(10);
    

    要使用->latest(),您的表中必须有一列created_at

    【讨论】:

    • 如何在没有 where 子句的情况下进行分页并获取最新信息??
    • @Farazsalehi 那可以是Model::orderBy('created_at', 'desc')->paginate()
    【解决方案2】:

    尝试通过 id DESC 订购:

    $messages = Message::where('to_id', $user->id)
    ->where('is_read', false)
    ->orderBy('id', 'DESC')
    ->paginate(10);
    

    或者通过 created_at:

    $messages = Message::where('to_id', $user->id)
    ->where('is_read', false)
    ->orderBy('created_at', 'DESC')
    ->paginate(10);
    

    你也可以使用latest():

    $messages = Message::where('to_id', $user->id)
    ->where('is_read', false)
    ->latest()
    ->paginate(10);
    

    【讨论】:

    • 这可能会更快,因为 id 已编入索引。
    猜你喜欢
    • 2012-11-24
    • 2014-02-13
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多