雄辩不允许以下划线开头的字段

时间:2017-02-28 13:11:41

标签: laravel eloquent

Eloquent明确拒绝以下划线开头的字段/列

https://github.com/laravel/framework/blob/7212b1e9620c36bf806e444f6931cf5f379c68ff/src/Illuminate/Database/Eloquent/Concerns/GuardsAttributes.php#L154

这里介绍了

https://github.com/laravel/framework/commit/1000e2dca7f42d5cd5e03cbdc85fcf957b7a5548

似乎唯一的方法是手动将每个下划线列指定为可填写或将无防护设置为真。

这有什么理由吗?我能想到的唯一原因是前缀_表示私有变量而不是放入数据库的系统?当下划线是SQL

中的有效列前缀时,似乎很奇怪

1 个答案:

答案 0 :(得分:0)

我认为这是因为Eloquent使用魔法。实际上,它必须强制执行命名约定,以确保不会出现不必要的错误。

例如,看一下Eloquent\Model\Concerns\HasAttributes的代码,您将看到它使用Str::studly来定义mutators。

如果Eloquent允许定义foo_column_foo_column,则两者都具有相同的mutator函数getFooColumn。这可能导致许多问题。例如,为foo_column定义mutator也会影响_foo_column