Laravel Eloquent更新无法查看需要更新的列

时间:2017-05-17 04:00:25

标签: php laravel orm eloquent

大家好,我创建了一个" promos"表,现在,我正在研究这个模块的CRUD功能。 "创建"功能完成,我没有遇到任何问题。我唯一的问题就是当我更新我的模型时,这很奇怪。

似乎$ this-> model-> where(' id',$ id) - > first()无法查看和检索列列表。这是截图。

enter image description here

我已经尝试过composer dump-autoload和php artisan clear-compiled,希望问题能解决。

有关其他参考,请参阅我的架构,模型和代码:

enter image description here

enter image description here

enter image description here

其他说明:$ this->模型指向Promo模型

编辑:

我没有特别按@OmarTarek所述的更新方法显示控制器。我们公司正在使用RepositoryInterface Pattern。在将数据保存到数据库时,我们的工作流程就像 View => Controller => Repository => Model View => Controller =>模型强>

在我的控制器中,我的代码是

enter image description here

在我的存储库中,我的代码是这样的:

enter image description here

如您所见,我继承了BaseRepository.php,因为它具有创建,更新和删除所需的所有功能/方法。

它是BaseRepository enter image description here

我突出显示了出错的代码。

编辑II:

我已经实施了@PaladiN建议的更改。错误仍然显示,更新方法仍然无法正常工作。

enter image description here

2 个答案:

答案 0 :(得分:1)

您可以删除first(),因为ID是主键。您还要在updateData()方法上再次调用更新语句,您应该将其删除。

$this->model->where($key, $value)->update($data);

此外,当您定义$ fillable或$ guarded时,不是两者都定义。使用空数组定义$ guarded时,默认情况下所有字段都可填充。另一件事是在继续之前检查使用make()在构造函数中创建的模型是否是有效的模型实例。

答案 1 :(得分:0)

抱歉迟到了。我刚刚解决了这个错误,但我仍然不知道这个错误是怎么发生的。似乎来自BaseModel.php的mutator干扰了数据的更新。

enter image description here

我尝试在Promo.php模型中覆盖mutator,使更新方法正常工作,错误不再显示。

我仍然不知道导致错误的原因,但我很想首先向我们的客户提供这个模块,所以我将调查下一次这种情况是如何发生的。

谢谢你们。