[英]Laravel attach pivot data without errors
我在模型產品上有一個數據透視表和一個關系:
public function product_bodies()
{
return $this->belongsToMany(static::class, 'product_bodies')->withPivot('product_id', 'product_body_id');
}
在控制器中要附加數據時:
$products = ['sadasdasd', 'asdasda', 'asdasd', 'asdasd']; //for column product_body_id
$product = Product::create($request->all());
$product->product_bodies()->attach($products);
我得到錯誤:
常規錯誤:1364字段“ product_body_id”沒有默認值
如果我這樣做:
public function product_bodies()
{
return $this->belongsToMany(static::class, 'product_bodies', 'product_id', 'product_body_id')->withPivot('product_id', 'product_body_id');
}
然后一切正常。 但是然后我無法通過以下方式獲取數據透視表:
$product->product_bodies;
我收到空物品。
我該如何解決這個問題?
表product_bodies
具有3列:
在product_body_id中,我傳遞了字符串。
我有3個想法:
您需要將static :: class替換為'\\ App \\ ProductBody'或ProductBody :: class
public function product_bodies() { return $this->belongsToMany('\\App\\ProductBody', 'product_bodies')->withPivot('product_id', 'product_body_id'); }
$ products必須是產品主體ID的數組。
$productBodiesIds = [1, 55, 66]; $product->product_bodies()->attach($productBodiesIds);
也許,同步而不是附加將是一個更好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.