Laravel -更新模型时更新另一个属性



在我的一个模型中,当同一模型中的其他两个属性更新时,我需要更新另一个属性。

在我的情况下,使用Accessor不是一个选项,因为在某些情况下,我需要做一个数据库查询来查找full_phone_number

什么是达到预期结果的最好方法?

这是我的模型:

class Address extends Model {

protected $fillable = [
'country_code',
'phone_number',
'full_phone_number',
];

}

当我创建一个新的Address时,我需要full_phone_number列自动填充:

$address = Address::create([
'country_code' => 55,
'phone_number' => 1199999999
]);

预期结果是:

# Address model on DB
{
"country_code": 55,
"phone_number": 1199999999,
"full_phone_number": 551199999999
}

当我从Address更新country_codephone_number时,我需要自动更新full_phone_number列:

$address->update([
'phone_number' => 1188888888
]);

预期结果是:

# Address model on DB
{
"country_code": 55,
"phone_number": 1188888888,
"full_phone_number": 551188888888
}

我使用events得到了所需的结果,但我不知道这是否是处理这种情况的最佳方法。同样可以转换为observer

class Address extends Model {
protected $fillable = [
'country_code',
'phone_number',
'full_phone_number',
];

protected static function boot()
{
parent::boot();
static::updating(function ($address) {
$address->full_phone_number = $address->country_code . $address->number;
});
}
}

相关内容

  • 没有找到相关文章

最新更新