gpt4 book ai didi

php - Laravel 附加枢轴数据没有错误

转载 作者:行者123 更新时间:2023-12-05 07:28:33 29 4
gpt4 key购买 nike

我有数据透视表和模型产品的关系:

public function product_bodies()
{
return $this->belongsToMany(static::class, 'product_bodies')->withPivot('product_id', 'product_body_id');
}

当我想附加数据时在 Controller 中:

    $products = ['sadasdasd', 'asdasda', 'asdasd', 'asdasd']; //for column product_body_id
$product = Product::create($request->all());

$product->product_bodies()->attach($products);

我得到错误:

General error: 1364 Field 'product_body_id' doesn't have a default value

如果我这样做:

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

我在 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. 也许,同步而不是附加会是更好的解决方案。

关于php - Laravel 附加枢轴数据没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306858/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com