2017-04-05 7 views
0

モデルに書き込むときに属性を作成または設定できるかどうか疑問です。私はsetMutatorでそれを実行しようとしましたが、属性が、私はこれを行う際に保存した値がそうモデルを書くときにLaravelで動的属性を作成する

public function setExampleAttribute($value) 
{ 
    $this->attributes['example'] = 100; 
} 

が作成されていないため、引数をリストで提供されていない場合:

Version::create(['name' => 'mark', 'example' => '50'); 

レコードが100

で保存されます。しかし、私はこれを行うとき:

Version::create(['name' => 'mark'); 

レコードが空です。

間に何かする方法はありますか?オブジェクトが書き込まれる前に、動的コンテンツを追加しますか?

答えて

0

create()fill()を使用して属性値を設定しているため、機能しません。あなたは、デフォルト値を設定するために$attributesを使用しようとすることができます

protected $attributes = ['example' => 100]; 

あなたは、動的属性を追加したい場合は、属性を設定した内部Eloquent creating eventを使用することができます。

$this->attributes['example'] = $value; 

またはミューテーターを呼び出します。

$this->setExampleAttribute(null); 
+0

提供される状況やその他の変数に応じて、動的にしたいと考えています。ハードコーディングはオプションではありません。 – Erhnam

+0

@エーラム私は答えを更新しました。 –

関連する問題