Laravel 使用分页器时 orderBy 日期不起作用

Laravel orderBy date is not working when using paginator

我是 laravel 的新手,我正在努力弄清楚这个 out.I 我正在尝试按日期排序我的帖子并使用分页器。每当我删除分页器时。它按日期排序,但我认为按 id 将其添加回订单?

我的模型

class Post extends Model
{
    //

protected $dates = ['date'];
}

我的控制器方法

public function show()
    {

        $posts = Post::orderBy('date','desc')->get();


        return view('welcome',['posts' => Post::paginate(5)], compact('posts'));
    }

您实际上是在检索所有帖子,然后在检索所有帖子并对其进行排序后对它们进行分页。

您的代码分解如下:

public function show()
{

    // retrieve posts and order them by date
    $posts = Post::orderBy('date','desc')->get();

    // retrieve posts again and paginate them
    return view('welcome',['posts' => Post::paginate(5)], compact('posts'));
}

你有两个选择--

获取帖子、对其进行排序、对其进行分页并将它们存储在您传递给视图的变量中:

public function show()
{

    $posts = Post::orderBy('date','desc')->paginate(5);


    return view('welcome', compact('posts'));
}

或者获取帖子,对它们进行排序并在将它们传递给视图时对其进行分页:

public function show()
{

    return view('welcome',[ 'posts' => Post::orderBy('date','desc')->paginate(5) ]);
}