Laravel使用Project::where查询时调用mapInto()方法报错求解
报错原因
mapInto() 是 Laravel 集合(Collection) 提供的方法,执行Project::where('user_id', auth()->user()->id)得到的是Illuminate\Database\Eloquent\Builder查询构造器实例,并未实际执行SQL查询获取结果,因此不存在mapInto方法,触发报错。Project::all()会直接执行查询返回集合实例,所以可以正常调用mapInto方法。
解决方案
在where条件后追加->get()方法触发SQL查询,获取结果集合后再调用mapInto即可,修改后的代码如下:
Project::where('user_id', auth()->user()->id)->get()->mapInto(ProjectResource::class)
如果你的User模型已经定义了projects关联关系,还可以使用更简洁的关联查询写法:
auth()->user()->projects->mapInto(ProjectResource::class)
内容的提问来源于stack exchange,提问作者Bình Nguyễn
相关产品推荐
相关产品推荐

