2016-05-06 19 views
0

私はこの問題に悩まされています。私はモデルに渡されているデータにjsonエンコードされた配列を追加したいと思います。Laravel - リポジトリからモデル:: create()にデータが渡されていません

私のモデルでは、提出する前に配列のカスタム作業を行うミューテータがあります。

しかし、データが$ data配列に存在することは確かですが、モデルの値をログに記録すると何も返されません。任意のアイデアが評価されます。

MyRepository.php

$data['additionalAttributes'] = json_encode($additionalAttributes); 
Log::debug($data); 
return MyModel::create($data); 

MyModel.php

//The following returns null for no reason. 
Log::debug($this->additionalAttributes); 

additionalAttributesも充填可能なプロパティに設定されています。それ以外の属性はすべてログ可能です。なぜこれが当てはまるのでしょうか?

更新

私は、プロパティ名の一部である「属性」という用語によって引き起こさかかわる問題であることを決定しました。プロパティの名前を "AdditionalStuff"に変更しようとしましたが、すぐに機能しました。私はgithubに関する問題を次のリンクで報告しました。

https://github.com/laravel/framework/issues/13460

次の例では、正常に動作します。唯一の変更は名前です。

MyRespoitory.php

$data['additionalStuff'] = json_encode($additionalStuff); 
Log::debug($data); 
return MyModel::create($data); 

以下戻り期待される出力。

MyModel.php

Log::debug($this->additionalStuff); 
+0

'$ this-> additionalAttributes'ではなく' $ value'をロギングしてはいけませんか? –

+1

モデルに$ fillable属性を定義しましたか? https://laravel.com/docs/5.2/eloquent#mass-assignment – Pascal

+0

@JoelHinz返信いただきありがとうございます。いいえ、ただの例ですが、私はミューテーターの方がはるかに多いですが、ログはadditionalAttributesの現在の値が設定されているかどうかを確認するためのテストです。私はこれがフレームワークのバグであることを確認しました。今質問を詳細で更新します。 – jiraiya

答えて

0

そのaccessors & mutatorsに縛ら。そのため、 'Attribute'接尾辞はフィールド名のために予約されています。

+0

これは私が何が起こっているのかを理解したときに見た最初のものでした。しかし、私はそれが "属性"ではなく "属性"以来、それが動作すると思っていただろうし、そのようなミューテータは "setAdditionalAttributesAttribute"という名前になります。 – jiraiya

関連する問題