Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 如何使用父模型更新子表?_Laravel_Eloquent_Laravel 6 - Fatal编程技术网

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();
}
也许可以这样做


也许它可以这样工作

你能分享一下让你出问题的代码吗?你能分享一下让你出问题的代码吗?