我有一个Laravel模型,其中包含各种字段,在数据库中默认为NULL,并且由于遗留原因而无法轻松更改。我想总是将这些作为空字符串返回,例如,当从我的路线返回JSON时。是否有"标准"以某种方式定义模型中的默认值的方法?
另一种情况可能是某个字段在返回之前总是需要对其进行一些处理,这也可以用类似的方式定义吗?感谢。
答案 0 :(得分:6)
您可以使用$attributes
属性指定默认值:
class MyModel extends Eloquent {
protected $attributes = array(
'foo' => 'bar'
);
}
但是我认为这仍然会被db中的NULL
覆盖。 $attributes
的用例更适用于创建和插入新记录。
要在将模型转换为JSON /更改为数组之前更改模型,您可以覆盖模型中的toArray()
:
public function toArray(){
$array = parent::toArray();
foreach($array as &$value){
if($value == null){
$value = '';
}
}
return $array;
}
如果某些字段需要特殊处理(例如格式化日期,连接两个属性),则可以使用accessor:
public function getFullNameAttribute(){
return $this->attributes['firstname'].' '.$this->attributes['lastname'];
}
现在您可以$model->full_name
(或$model->fullName
取决于您喜欢的方式)访问它
最后,要将其添加到JSON /数组输出,请使用$appends
protected $appends = array('full_name');