簡體   English   中英

Laravel附加數據透視表沒有錯誤

[英]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列:

  • ID
  • PRODUCT_ID
  • product_body_id

在product_body_id中,我傳遞了字符串。

我有3個想法:

  1. 您需要將static :: class替換為'\\ App \\ ProductBody'或ProductBody :: class

     public function product_bodies() { return $this->belongsToMany('\\App\\ProductBody', 'product_bodies')->withPivot('product_id', 'product_body_id'); } 
  2. $ products必須是產品主體ID的數組。

     $productBodiesIds = [1, 55, 66]; $product->product_bodies()->attach($productBodiesIds); 
  3. 也許,同步而不是附加將是一個更好的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM