修改Eloquent将JSON转换为属性

问题描述:

我的Eloquent模型有一个名为“group_answers”的属性/列,它是json表示的其他自定义问题和答案,如;修改Eloquent将JSON转换为属性

{ 
    "satisfied_with_course":"3", 
    "satisfied_with_teacher":"5", 
    "satisfied_with_residence":"2", 
} 

是否有可能改变模型,使我有每个键的附加属性?那可以称为$model->satisfied_with_course而不是$model->group_answers['satisfied_with_course']

我相信你可以使用Eloquent的Accessor和Mutator选项。所以对于Mutator,你的模型中会有这样的东西。

public function setSatisfiedWithCourceAttribute($value) 
{ 
    $this->attributes['group_answers']['satisfied_with_course'] = $value; 
} 

和你的访问者应该是这样的:

public function getSatisfiedWithCourceAttribute($value) 
{ 
    return $this->group_answers['satisfied_with_course']; 
} 

我会尽力建立起来的东西,所以我可以测试并确保它正常工作。

下面是存取函数的文档:https://laravel.com/docs/5.1/eloquent-mutators

+0

啊,所以我必须要知道什么问题是,以创建模型的赋值函数/存取方法?我想这其实很好。 – mikelovelyuk

+0

您可以使用PHP魔法获取器和设置器选项,但不一定建议。 – Pitchinnate