我想知道在模型中写入时是否可以创建或设置属性。我尝试使用setMutator进行此操作,但是当列表中未提供带有保存参数的属性时,不会创建该值
public function setExampleAttribute($value)
{
$this->attributes['example'] = 100;
}
所以当我这样做时:
Version::create(['name' => 'mark', 'example' => '50');
记录保存为100。
但是当我这样做时:
Version::create(['name' => 'mark');
记录为空。
有没有办法在两者之间做点什么?那么在编写对象之前,添加一些动态内容?
答案 0 :(得分:0)
它不起作用,因为create()
使用fill()
来设置属性值。您可以尝试使用$attributes
设置默认值:
protected $attributes = ['example' => 100];
如果要添加动态属性,可以在其中设置属性使用Eloquent creating
event:
$this->attributes['example'] = $value;
或致电mutator:
$this->setExampleAttribute(null);
答案 1 :(得分:0)
fill()
考虑将其移至基类或特征,这只是一个示例:
<?php
class Version extends Model {
public function fill(array $attributes) {
parent::fill($attributes);
// Your own implementation here
}
}