Laravel 8中MorphMany关联返回空数组问题求助
问题修复方案
你的问题出在产品模型的关联方法定义错误,导致预加载images时无法正确关联到图片数据,以下是具体修复步骤:
错误点分析
- 关联类型错误:产品与图片是多态一对多关联,应使用
morphMany方法,而非多对多的belongsToMany。 - 关联模型错误:关联目标写成了
Category::class,实际应该关联图片模型(比如Image::class)。 - 缺少返回语句:
images()方法没有返回关联实例,仅执行了关联逻辑但未返回结果。
修复后的产品模型代码
protected $fillable=['name', 'description']; public function images(){ return $this->morphMany(Image::class, 'imagable'); }
额外验证
确保图片表(如images)的字段正确:
imagable_id:存储关联模型的ID(整数类型)imagable_type:存储关联模型的类名(字符串类型)
修复后,控制器的index方法执行Product::with('images')->get()即可正常返回包含图片数据的产品列表。
内容的提问来源于stack exchange,提问作者Infinite Button
相关产品推荐
相关产品推荐

