Laravel Sync调用未定义的方法Illuminate \ Database \ Query \ Builder

时间:2017-12-04 05:47:47

标签: php laravel

我尝试为我的每个产品提供多个选项和几个规格。

为了获得多个值而不是一个,我必须创建名为product_suboptionsproduct_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_suboptionsproduct_subspecifications表中没有任何内容。

任何想法?

1 个答案:

答案 0 :(得分:0)

解决

问题出在我的表格中,我试图得到像name="suboption_id[]"这样的名字,我必须得到name="suboptions[]"现在正常运作。