使用Laravel simplePaginate()报错:Paginator::$image未定义
问题:使用simplePaginate()时出现Undefined property错误
控制器代码
foreach($lesson->products as $product) { $p[] = $product->simplePaginate(1); }
视图代码
@foreach($p as $data) <img src="{{ asset('storage/'.$data->image) }}" alt=""> @endforeach {{ $p->links('layouts.paginate') }}
错误信息
Undefined property: Illuminate\Pagination\Paginator::$image
问题原因
- 控制器逻辑错误:你循环每个
$product调用simplePaginate(1),导致$p变成了分页器实例的数组,而不是包含产品数据的分页集合。 - 视图遍历错误:
$p中的每个元素是Illuminate\Pagination\Paginator对象,这个对象本身没有image属性,直接访问$data->image必然报错。 - 额外问题:
$p是数组,调用$p->links()也会报错,因为数组不存在links()方法。
修正方案
控制器代码修改
直接对lesson关联的products查询构造器做分页,无需循环:
$p = $lesson->products()->simplePaginate(1);
注意:必须用
products()(带括号),它返回查询构造器,支持分页方法;如果用products(不带括号)是已加载的集合,无法直接执行分页操作。
视图代码修改
遍历分页器中的产品数据,再调用分页器的links()方法:
@foreach($p as $data) <img src="{{ asset('storage/'.$data->image) }}" alt=""> @endforeach {{ $p->links('layouts.paginate') }}
内容的提问来源于stack exchange,提问作者mary
相关产品推荐
相关产品推荐

