【问题标题】:Laravel - data not being passed to model::create() from repositoryLaravel - 数据没有从存储库传递到模型::create()
【发布时间】: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


【解决方案1】:

我已确定这是一个错误,请参阅上面的问题了解详细信息以及 github 上报告的问题。

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

【讨论】:

    【解决方案2】:

    它与accessors & mutators 相关联。因此,“属性”后缀是为字段名称保留的。

    【讨论】:

    • 是的,当我意识到发生了什么时,这是我看到的第一件事。但我原以为它会起作用,因为它的“属性”而不是“属性”,因此变异器将被命名为“setAdditionalAttributesAttribute”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-26
    • 2016-12-17
    • 1970-01-01
    • 2017-08-03
    • 2021-11-30
    • 2021-02-25
    相关资源
    最近更新 更多