每次我尝试设置我的分页时:
缺少Illuminate \ Support \ Collection :: get()
的参数1
我的控制器:
public function index()
{
$products = DB::table('products')
->where('product_group_id', '=', 1)
->paginate(15)
->get();
return view('product.index', [
'products' => $products,
]);
}
我的观点:
{{ $products->links() }}
这里出了什么问题?
答案 0 :(得分:2)
此处您不需要->get()
。 ->paginate()
从数据库中获取您的记录,并返回这15个项目的集合。
当您在此处运行->get()
时,您尝试在返回的集合上运行它,该集合需要$key
并用于从集合中获取特定项目。
你应该这样做:
$products = DB::table('products')
->where('product_group_id', '=', 1)
->paginate(15);
return view('product.index', [
'products' => $products,
]);
或与Eloquent
$product = Product::where('product_group_id', '=', 1)
->paginate(15);
return view('product.index', [
'products' => $products,
]);
注意:我已经在paginate()
调用之前放置了过滤器,以确保where子句是数据库查询的一部分,而不是尝试过滤生成的集合/分页器
答案 1 :(得分:0)
当您在paginate()
对象You will get an instance of \Illuminate\Pagination\LengthAwarePaginator
上调用Illuminate\Database\Query\Builder
方法时。它本身没有get()
- 方法,但它扩展的Illuminate\Pagination\AbstractPaginator
有一个magic __call()
function,它将调用转发给基础Collection。
现在,Illuminate\Support\Collection
执行 have a get()
method,但它会将您想要从Collection中获取的元素的键作为参数,因此会出现错误。
现在,我想你真正希望通过页码链接实现标准分页,并且#34;转发"和"返回"纽扣。如果是这样,您应该坚持使用documentation:按照您的方式获取数据,只需忽略get()
,然后在视图中显示here。
编辑:请阅读您收到的Method links does not exist
错误。这确实很奇怪。 Builder::paginate()
肯定会返回LengthAwarePaginator
的实例,该实例本身肯定有links()
方法。
是否还有一些与此问题相关的代码尚未向我们展示?也许在你看来?