如何在laravel中使用pangination和sortByDesc功能?

时间:2018-05-12 18:04:57

标签: php laravel

我尝试在我的laravel视图中使用分页我遇到了这个问题

  

方法Illuminate \ Database \ Eloquent \ Collection :: links不存在。 (查看:C:\ wamp \ www \ project \ resources \ views \ demmande \ demmandes.blade.php)

这是我的控制器功能

public function ViewDemmandes(){
    $listdemmande=Demmande::paginate(10)->sortByDesc('created_at');
    $listvillee=Ville::all();
    $listcategorie=Categorie::all();

    $villes = $listvillee;
    $demmande = $listdemmande;
    $categorie = $listcategorie;

    return view("demmande.demmandes",compact('villes','categorie','demmande'));
}

但是当我像这样删除sortByDesc函数时

public function ViewDemmandes(){
    $listdemmande=Demmande::paginate(3);
    $listvillee=Ville::all();
    $listcategorie=Categorie::all();

    $villes = $listvillee;
    $demmande = $listdemmande;
    $categorie = $listcategorie;

    return view("demmande.demmandes",compact('villes','categorie','demmande'));
}

它运作正常请你帮我解决这个问题

2 个答案:

答案 0 :(得分:1)

->paginate(10)将返回LengthAwarePaginator的实例。这实现了Collection具有的所有方法(->sortByDesc()是其中之一)。但是调用collection方法将返回底层集合,而不是paginator的实例。

因此,在您的情况下,您将覆盖从->sortByDesc()返回的集合的分页符。

使用SQL而不是集合排序:

$listdemmande = Demmande::orderBy('created_at', 'DESC')->paginate(10);
// Or using `->latest()` shorthand:
// $listdemmande = Demmande::latest()->paginate(10);

如果您想要在获取查询后进行排序,则可以仅覆盖基础集合的分页器:

$listdemmande = Demmande::paginate(10);
$listdemmande->setCollection($listdemmande->sortByDesc('created_at'));

答案 1 :(得分:1)

你可以在控制器中使用这样的东西

$ listdemmande = Demmande :: orderBy('created_at','desc') - > paginate(10);

并且不要忘记添加刀片视图以添加此...

在foreach添加到此

之后
  

{{$ listdemmande->链接()}}

您的链接错误已解决。