我有一个users表: 然后是user_roles表,定义如下: 并存储actor 、 director等值 还有一个user_record数据透视表: 所以,一个Record有很多User ,而这个Record有很多User_Role 。 user_record中的所有 Id 都是 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我在模型产品上有一个数据透视表和一个关系:
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.