【发布时间】:2018-03-04 17:41:42
【问题描述】:
在使用其他框架或纯 PHP 时,我会保护我的模型属性。然后,我在需要时创建公共 getter 和 setter,并使用 __get() 和 __set() 代理它们。这有助于我晚上睡觉。
最近我开始使用 Laravel,我对 Eloquent 模型的“不受保护”程度感到惊讶。我知道我可以使用 $guarded 和 $fillable 属性来控制批量分配,但这仍然为意外访问留下了很大的空间。
例如,我的模型有一个status 属性。它在模型创建时设置了默认值,并且只能在调用 $model->activate() 或 $model->deactivate() 时进行修改。但默认情况下,Laravel 允许开发者直接对其进行修改。据我所知,防止这种情况的唯一方法是创建一个 setter,并在调用时抛出异常。
我错过了什么吗?也许我只需要放松一下?构建默认安全的 Eloquent 模型的最佳方法是什么?
【问题讨论】: