我尝试为我的每个产品提供多个选项和几个规格。
为了获得多个值而不是一个,我必须创建名为product_suboptions
和product_subspecifications
的第三个表,其中它获取了产品ID和options
+ subspecifications
的ID
这是我的创建方法:
$options = Option::all();
$suboptions = Suboption::all();
$specifications = Specification::all();
$subspecifications = Subspecification::all();
return view('admin.products.create', compact('options', 'suboptions', 'specifications', 'subspecifications'));
这是我的商店方法:
public function store(Request $request)
{
//.........
$product->save();
$product->suboptions()->sync($request->suboptions, false);
$product->subspecifications()->sync($request->subspecifications, false);
return ......//
}
我的模特中的这种关系:
Product
public function option(){
return $this->belongsToMany(Option::class);
}
public function suboption(){
return $this->belongsToMany(Suboption::class);
}
public function specification(){
return $this->belongsToMany(Specification::class);
}
public function subspecification(){
return $this->belongsToMany(Subspecification::class);
}
Option
public function products(){
return $this->belongsToMany(Product::class);
}
Suboption
public function products(){
return $this->belongsToMany(Product::class);
}
Specification
public function products(){
return $this->belongsToMany(Product::class);
}
Subspecification
public function products(){
return $this->belongsToMany(Product::class);
}
现在问题是当我保存产品时它会返回此错误
BadMethodCallException 调用未定义的方法Illuminate \ Database \ Query \ Builder :: suboptions()
仅保存我的产品,但product_suboptions
和product_subspecifications
表中没有任何内容。
任何想法?
答案 0 :(得分:0)
问题出在我的表格中,我试图得到像name="suboption_id[]"
这样的名字,我必须得到name="suboptions[]"
现在正常运作。