2017-04-05 74 views
0

我在编写模型时是否可以创建或设置属性。我试着用setMutator做到这一点,但是当没有在列表中提供的参数属性保存的值不会产生Laravel在模型中写入时创建动态属性

public function setExampleAttribute($value) 
{ 
    $this->attributes['example'] = 100; 
} 

所以,当我这样做:

Version::create(['name' => 'mark', 'example' => '50'); 

的记录保存100

但是当我这样做:

Version::create(['name' => 'mark'); 

的记录是空的。

有办法在两者之间做点什么吗?所以在写对象之前,添加一些动态内容?

回答

0

它不起作用,因为create()使用fill()来设置属性值。你可以尝试使用$attributes设置默认值:

protected $attributes = ['example' => 100]; 

如果你想添加一个动态属性,你可以使用Eloquent creating event在其内部设置属性:

$this->attributes['example'] = $value; 

或致电突变:

$this->setExampleAttribute(null); 
+0

我想让它变成动态的,这取决于所提供的情况和其他变量。硬编码不是这里的选项。 – Erhnam

+0

@Erhnam我已经更新了答案。 –