我被这个难住了。我想在传递给我的模型的数据中添加一个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也已在可填充属性中设置。除了这个属性之外,其他所有属性都是可记录的?为什么会这样?
更新
我已经确定这是由属性名称中的"属性"术语引起的错误。我试着把房子的名字改成"AdditionalStuff",结果马上就成功了。我已经在下面的链接中报告了github上的问题。
https://github.com/laravel/framework/issues/13460
下一个例子很好用。唯一的变化是名字。
MyResponitory.php
$data['additionalStuff'] = json_encode($additionalStuff);
Log::debug($data);
return MyModel::create($data);
以下内容返回预期的输出。
MyModel.php
Log::debug($this->additionalStuff);
我已经确定这是一个错误。有关详细信息和github上报告的问题,请参阅上面的问题。
https://github.com/laravel/framework/issues/13460
它绑定到访问者&突变体。因此,为字段名称保留了"Attribute"后缀。