首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5.4变送器不工作

Laravel 5.4变送器不工作
EN

Stack Overflow用户
提问于 2018-01-17 21:20:42
回答 1查看 4K关注 0票数 0

我有一个变形器不起作用,我看了看这里,尝试了一些建议,但似乎没有任何东西使它起作用。

这是我的模型:

代码语言:javascript
复制
...

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

主计长:

代码语言:javascript
复制
if($participant->isRetailer){
       $retail = Retailer::find($participant->id);
       $participant->energyTypes = $retail->energy_types;

如果我在这里转储$retail,energy_types仍然是这样的:

代码语言:javascript
复制
["energy_types"]=>
    string(3) "1,2"

我尝试过改变获得$retail的方式,重新迁移,甚至设置属性(也不起作用)。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-29 09:45:55

首先,Mutator函数类似于"setEnergyTypesAttribute“。

但是,您的代码片段显示您正在尝试定义访问器。

无论如何,如果您在从数据库检索数据时试图向Model添加自定义属性,下面是您如何做到的。

代码语言:javascript
复制
...
protected $appends = ['foo'];
...
public function getFooAttribute()
{
    return $this->attributes['bar'] . ' foo'; 
}

其中"bar“是模型中的原始属性。

希望能帮上忙。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48310168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档