我想在我的Laravel应用程序中更改默认的数据库命名约定。默认情况下,Laravel使用snake case作为数据库表和列名。但我想使用Pascal Case作为表名,我想使用camel Case作为字段。
因此,表名为Users
而不是users
,字段名为createdAt
、updatedAt
和deletedAt
而不是created_at
、updated_at
和deleted_at
。
我知道我可以使用$table
属性在每个模型的基础上更改这些属性,但我想更改默认值,而不必修改每个模型。
Laravel中是否有类似Symfony's NamingStrategy
的设置?
3条答案
按热度按时间fcipmucu1#
如果你看一下
Illuminate\Database\Eloquent\Model::getTable()
的代码,它非常简单:Illuminate\Database\Eloquent\Concerns\HasTimestamps::getCreatedAtColumn()
:因此,创建自己的类来扩展
Model
并覆盖该行为:现在,只需让模型扩展
App\Models\Model
而不是Illuminate\Database\Eloquent\Model
。dgiusagp2#
你可以使用stubs来实现。如果你用Pascal Case命名你的表,只需要在model中使用
$table
属性,它需要与那个表同步。nzkunb0c3#
您可以创建一个新模型,用于扩展模型。
如果你想让Laravel生成你的模型来扩展它,你可以通过编辑存根来实现。
快跑
然后编辑
stubs/model.stub
,将Model
替换为ModelWithPascalCase
。之后,当你跑的时候
您将得到由
ModelWithPascalCase
扩展的User
模型。