我有 2 个表,products
并且variants
具有hasMany关系,结构如下:
产品型号:
public function variants()
{
return $this->hasMany(Variant::class);
}
变体型号:
public function product()
{
return $this->belongsTo(Product::class);
}
产品表:
| id name image manufacturer
| 1 T-Shirt t-s.jpg docomo
| 2 Short Skirt s-skirt.jpg docomo
变体表:
| id product_id name price sku quantity
| 1 1 S 30 ts-s 100
| 2 1 M 32 ts-m 100
| 3 1 XL 35 ts-xl 100
| 4 2 S 23 sk-s 100
| 5 2 M 25 sk-m 100
| 6 2 XL 28 sk-xl 100
我可以将产品模型中变体模型(子表)的数据保存为:
public function store(Request $request)
{
$q = new Product;
$q->name = $request->name;
$q->save();
// Below child table
$q->variants()->createMany($request->variant);
}
我可以存储数据,但问题是,如何更新子表?[可以创建,更新或删除]我尝试了sync()
方法,但没有奏效。它的manyToMany
关系。
public function update(Request $request)
{
$q = Product::findOrFail($request->id);
$q->name = $request->name;
$q->save();
// Below child table update
// $q->variants()->sync($request->variant); // not worked
}
sync()
在manyToMany
关系中工作。我需要同样的hasMany
关系。
我怎样才能做到这一点?