Laravel 5.4 突变器不工作
Laravel 5.4 Mutator not working
我有一个不工作的修改器,我浏览了这里,尝试了一些建议,但似乎没有任何东西可以让它工作。
这是我的模型:
...
protected $fillable = [
'energy_types'
];
...
public function getEnergyTypesAttribute($value)
{
$types = explode(',', $value);
$fuels = array();
foreach($types as $type){
switch ($type){
case '2':
$fuelType = 'Gas (Reticulated)';
break;
case '3':
$fuelType = 'Gas (Bottled)';
break;
default:
$fuelType = 'Electricity';
}
$fuels[] = array( "id" => $type,
"name" => $fuelType);
}
return $fuels;
}
在数据库中存储为:
energy_types
1
1,2
1
控制器:
if($participant->isRetailer){
$retail = Retailer::find($participant->id);
$participant->energyTypes = $retail->energy_types;
如果我在这里转储 $retail,energy_types 仍然是这样:
["energy_types"]=>
string(3) "1,2"
我试过更改获取 $retail 的方式,重新迁移,甚至尝试设置属性(也不起作用)。
我做错了什么?
首先,Mutator 函数类似于 "setEnergyTypesAttribute"。
但是,您的代码片段表明您正在尝试定义访问器。
无论如何,如果您在从数据库中检索数据时尝试向模型添加自定义属性,请按以下步骤操作。
...
protected $appends = ['foo'];
...
public function getFooAttribute()
{
return $this->attributes['bar'] . ' foo';
}
其中 "bar" 是模型中的原始属性。
希望对您有所帮助。
我有一个不工作的修改器,我浏览了这里,尝试了一些建议,但似乎没有任何东西可以让它工作。
这是我的模型:
...
protected $fillable = [
'energy_types'
];
...
public function getEnergyTypesAttribute($value)
{
$types = explode(',', $value);
$fuels = array();
foreach($types as $type){
switch ($type){
case '2':
$fuelType = 'Gas (Reticulated)';
break;
case '3':
$fuelType = 'Gas (Bottled)';
break;
default:
$fuelType = 'Electricity';
}
$fuels[] = array( "id" => $type,
"name" => $fuelType);
}
return $fuels;
}
在数据库中存储为:
energy_types
1
1,2
1
控制器:
if($participant->isRetailer){
$retail = Retailer::find($participant->id);
$participant->energyTypes = $retail->energy_types;
如果我在这里转储 $retail,energy_types 仍然是这样:
["energy_types"]=>
string(3) "1,2"
我试过更改获取 $retail 的方式,重新迁移,甚至尝试设置属性(也不起作用)。
我做错了什么?
首先,Mutator 函数类似于 "setEnergyTypesAttribute"。
但是,您的代码片段表明您正在尝试定义访问器。
无论如何,如果您在从数据库中检索数据时尝试向模型添加自定义属性,请按以下步骤操作。
...
protected $appends = ['foo'];
...
public function getFooAttribute()
{
return $this->attributes['bar'] . ' foo';
}
其中 "bar" 是模型中的原始属性。
希望对您有所帮助。