我有2个表variants
和public function variants()
{
return $this->hasMany(Variant::class);
}
,具有 hasMany 关系,结构如下:
产品型号:
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);
}
我可以将产品模型的 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
关系工作。对于select * from GLB_Course where GLB_CourseID in (Select GLB_CourseID from GLB_CourseVesselType where Deleted=0 and VesselTypeID=2)
关系,我也需要相同的条件。
我该怎么办?
答案 0 :(得分:0)
不幸的是,没有用于sync
关系的hasMany
方法。自己做很简单。您可以简单地删除行,然后重新插入所有行。
public function update(Request $request, Product $product)
{
$product->update(['name' => $request->name]);
// Below child table update
$product->variants()->delete();
$product->variants()->sync($request->variant);
}