【问题标题】:Laravel orderBy date is not working when using paginator使用分页器时,Laravel orderBy date 不起作用
【发布时间】:2017-01-03 14:28:51
【问题描述】:

我是 laravel 的新手,正在努力解决这个问题。我正在尝试按日期排序我的帖子并使用分页器。每当我删除分页器时。它按日期排序,但我认为是按 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'));
    }

【问题讨论】:

    标签: php laravel laravel-5.3


    【解决方案1】:

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

    您的代码分解如下:

    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) ]);
    }
    

    【讨论】:

    • 哦..哈。这就说得通了。谢谢你。虽然第一个选项不起作用。第二个效果很好。第一个选项给了我一个例外。
    • 一开始有错字,现在应该可以了。我更喜欢第一个,因为我喜欢更详细地处理变量。
    • 第一个错字是什么,我没看出有什么区别?
    • 你不要在paginate()之后调用get()。 Paginate 已经返回结果(LengthAwarePaginator 实例)
    • 酷,我更喜欢看第一个选项,再次感谢。
    猜你喜欢
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 1970-01-01
    相关资源
    最近更新 更多