Laravel 如何使用父模型更新子表?
我有两个表Laravel 如何使用父模型更新子表?,laravel,eloquent,laravel-6,Laravel,Eloquent,Laravel 6,我有两个表产品和变体,有很多关系,结构如下: 产品表: | id name image manufacturer | 1 T-Shirt t-s.jpg docomo | 2 Short Skirt s-skirt.jpg docomo | id product_id name
产品
和变体
,有很多关系,结构如下:
产品表:
| 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 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 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 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 variants()
{
return $this->hasMany(Variant::class);
}
public function product()
{
return $this->belongsTo(Product::class);
}
我可以使用产品模型保存变量(子表)上的数据,但问题是,我无法使用产品更新变量表,如何使用父级更新子模型???您可以尝试此方法
$product=Product::find($id);
$product->variants()->update(['name'=>'abc','price'=>'20']);
我希望它对你有用你可以试试这个
$product=Product::find($id);
$product->variants()->update(['name'=>'abc','price'=>'20']);
// Single Update
$variant = Variant::find($variantId)->fill($requestData)->save();
$variant->product()->fill(['name'=>'abc','price'=>'20'])->save();
// Multiple Update/Store
$variant = null;
foreach ($requestVariants as $requestVariant) {
if ($variant = Variant::find($requestVariant['id'] ?? null)) {
$variant->fill($requestData)->save();
} else {
$variant = Variant::create($requestData);
}
}
if ($variant) {
$variant->product()->fill(['name'=>'abc','price'=>'20'])->save();
}
我希望它对你有用
// Single Update
$variant = Variant::find($variantId)->fill($requestData)->save();
$variant->product()->fill(['name'=>'abc','price'=>'20'])->save();
// Multiple Update/Store
$variant = null;
foreach ($requestVariants as $requestVariant) {
if ($variant = Variant::find($requestVariant['id'] ?? null)) {
$variant->fill($requestData)->save();
} else {
$variant = Variant::create($requestData);
}
}
if ($variant) {
$variant->product()->fill(['name'=>'abc','price'=>'20'])->save();
}
也许可以这样做
也许它可以这样工作你能分享一下让你出问题的代码吗?你能分享一下让你出问题的代码吗?