根据我将详细介绍的示例,我也在寻找执行此操作的最佳方法。
基本上我的控制器所做的是带上选定的类别名称(来自导航栏),并通过一个范围,我将类别作为一个对象。然后通过1:M的关系,我把那个类别的所有文章都带来了。而且它最终显示
我的问题是我按 id 升序排列它们。作为一篇文章,它首先向我展示了最古老的。我需要的是按降序排列它们,以便它首先向我显示最新的
public function searchCategoria($nombre){
$categoria = Categoria::searchCategoria($nombre)->first();
$articulos = $categoria->articulos()->paginate(5);
$articulos->each(function($articulos){
$articulos->categoria;
$articulos->imagen;
});
dd($articulos);
return view('front/index')->with("articulos",$articulos);
}
这是 $articles 的 dd 的结果
LengthAwarePaginator {#249 ▼
#total: 1
#lastPage: 1
#items: Collection {#250 ▼
#items: array:1 [▼
0 => Articulo {#252 ▶}
]
}
#perPage: 5
#currentPage: 1
#path: "http://emap.net/categorias/Noticias"
#query: []
#fragment: null
#pageName: "page"
}
在我对 PHP 和 Laravel 的更多经验中,我还没有使用任何排序方法。但我很想知道是否有更好的解决方案,通过模型内部关系中的 orderBy 或类似的东西。因为至少在 Java 中排序总是最后的手段。
我想到的另一个基本上是获取类别,获取它的 id 并搜索所有带有 where 和 orderBy 的文章。我不会利用这种关系,它会更实用但我不知道它是否最正确
考虑到您已经拥有该集合,我会
sortByDesc()
在应用分页之前使用带有日期或所需字段的方法(适用于集合),但是我目前没有办法测试它,我没有'不记得当时它是否已经是一个集合或仍然是一个查询。收藏:
查询生成器: