将Eloquent强制转换JSON修改为属性

时间:2016-03-02 14:31:28

标签: php laravel-5.1

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

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

是否可以更改模型以便为每个键设置其他属性?这可以称为$model->satisfied_with_course而不是$model->group_answers['satisfied_with_course']

1 个答案:

答案 0 :(得分:1)

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

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

你的Accessor看起来像这样:

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

我会尝试设置一些东西,这样我就可以测试并确保它有效。

以下是Accessors和Mutators的文档:https://laravel.com/docs/5.1/eloquent-mutators