Laravel-数据未从存储库传递到模型::create()


Laravel - data not being passed to model::create() from repository

我被这个难住了。我想在传递给我的模型的数据中添加一个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"后缀。