php 用关系更新Laravel模型的最佳和优雅的方法

1cosmwyk  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(137)

产品型号

class Product extends Model
{
    public function features(): HasOne
    {
        return $this->hasOne(Feature::class);
    }
}

特征模型

class Feature extends Model
{
    public function product(): BelongsTo
    {
        return $this->belongsTo(Product::class);
    }
}

产品控制器

public function update(Request $request, Product $product) {

    $fields = [
        'name' => 'Some stuff', // It's Product Model field
        'features' => 'Cool feature', // It's Feature Model field
    ];

    $product->update($fields);
            
    $features = Feature::where('product_id', $product->id)->firstOrFail();
    $features->update($fields);
}

是否需要检索特征模型的示例来更新其单个字段?我尝试了以下方法:

$product->features()->save($fields);

但它不起作用,因为请求中没有'product_id'键,并且Laravel不知道我到底要更新什么。
使用关系更新模型的最佳实践是什么?

fdbelqdn

fdbelqdn1#

这是旧的,但您可以updateOrCreate查尔兹,避免选择和更新两个步骤:
关系文档

相关问题