Laravel报错:调用App\Models\Product模型上未定义的[product]关联
Laravel报错:调用App\Models\Product模型上未定义的[product]关联
嘿,我看了你的代码,问题一眼就能看出来——你在控制器里调用了一个根本不存在的关联关系!
先看你的show_product方法:
public function show_product(){ $product=Product::with(['product.product_plan','product.product_two'])->get(); return view('admin.show_product',compact('product')); }
这里你用了product.product_plan和product.product_two,但你的Product模型里并没有定义名为product的关联,你定义的是直接挂在Product模型上的product_two和product_plan关联啊!
正确的写法应该是这样:
直接加载Product模型本身的关联,不需要加product.前缀:
public function show_product(){ $product=Product::with(['product_plan','product_two'])->get(); return view('admin.show_product',compact('product')); }
另外,我还发现一个潜在问题:
你的Product模型里的product_plan关联定义可能有问题:
public function product_plan(){ return $this->hasOne(Product_plan::class, 'other_details','id'); }
这里你把外键指定为other_details,但通常这种关联的外键应该是product_id(关联到Product的id字段),如果你的product_plans表的外键确实是other_details那没问题,但如果是笔误的话,后续肯定会出现关联数据加载不出来的问题,建议赶紧检查一下数据库表结构。
总结一下:
- 你错误地在
with方法里嵌套了不存在的product关联,直接写模型中已定义的关联名称即可 - 检查
product_plan关联的外键是否符合你的数据库表结构,避免后续出现数据加载异常
备注:内容来源于stack exchange,提问作者Eamun Islam Nabid
相关产品推荐
相关产品推荐

