2017-06-29 4 views
1

したがって、jsonフィールドを属性として持つモデルがあります。それが取得されると、私はそのフィールドを配列に変換したいので、他のものを行うことができます。これは例ですLaravelモデルがデータでいっぱいになると、アクションを実行します

public function setJsonAttribute($value) 
{ 
    $this->attributes['json'] = $value; 
    $jsonInfo = json_decode($value, true); 
    $this->name = $jsonInfo['email']; 
    $this->email = $jsonInfo['name']; 
} 

:JSONはjsonと呼ばれるパラメータで、この{name:bob,email:sue}ようなデータを持っている場合は、モデルオブジェクトの構築時に

たとえば、私はこのような何かにそれをたいと思います私がミューテータでやった試みですが、最適ではありません。モデルにデータベースからデータがロードされると、自動的にこのようなことをする方法はありますか?

Laravel 5.4

答えて

0

雄弁は、JSONからの検索に配列プロパティにフィールドを変換し、バック節約にJSON文字列に配列を変換する配列キャスティングと呼ばれる機能を備えています。あなたは$を追加することで、これを有効にすることができ

は、値としてキー配列としてフィールド名を使用してモデルにプロパティをキャスト:あなたが{name:bob,email:sue}ようoptionsを持っていた場合

protected $casts = [ 
    'options' => 'array', 
]; 

https://laravel.com/docs/5.4/eloquent-mutators#array-and-json-casting

データベースには、$model->options['name']$model->options['email']という名前でアクセスします。

+0

私が望んでいたものではありませんが、これはうまくいくでしょう。確かに、私が料理していたものよりもはるかにクリーンでハッキー感が少ない。 – Chris

関連する問題