【发布时间】:2016-05-06 13:42:23
【问题描述】:
我被这个难住了。我想在传递给我的模型的数据中添加一个 json 编码的数组。
在我的模型中,我有一个 mutator,它将在提交之前对数组执行一些自定义工作。
但是,即使我确定数据存在于 $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 也已在 fillable 属性中设置。除了这个之外,所有其他属性都是可记录的?关于为什么会这样的任何想法?
更新
我已确定这是由于“属性”一词是属性名称的一部分而引起的错误。我尝试将属性名称更改为“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);
【问题讨论】:
-
你不应该记录
$value而不是$this->additionalAttributes吗? -
您是否在模型上定义了 $fillable 属性? laravel.com/docs/5.2/eloquent#mass-assignment
-
@JoelHinz 感谢您的回复。不,这只是一个例子,我的 mutator 中有更多内容,但日志只是测试是否设置了 additionalAttributes 的当前值。我已经验证这是框架中的一个错误。我现在将详细更新问题。
-
@Pascal 嗨,Pascal,是的,我确实做到了。我已经验证这是一个错误。我现在正在更新这个问题的详细信息,我也在 github 上向 Laravel 报告了它。
标签: php laravel laravel-5 repository laravel-5.2