你是否也曾为 laravel 项目中,为每一个数据库表手动创建 eloquent 模型而感到头疼?
想象一下,你的项目有几十甚至上百个数据表,每个表都需要一个对应的 Eloquent 模型。你需要手动创建文件、定义
protected $table
protected $fillable
protected $hidden
@property
这不仅是一项极其重复的工作,而且极易出错。一个简单的拼写错误,一个遗漏的
fillable
幸运的是,PHP 社区的强大生态为我们提供了完美的解决方案——
krlove/eloquent-model-generator
krlove/eloquent-model-generator
krlove/eloquent-model-generator
hasMany
belongsTo
它不仅能识别表字段,还能智能地推断出常见的表关系,并自动生成对应的关系方法,这对于处理复杂数据库的项目来说简直是救星。
krlove/eloquent-model-generator
使用这个工具非常简单,只需几个步骤:
首先,通过 Composer 将其添加到你的 Laravel 项目中。由于这是一个开发工具,我们通常将其作为开发依赖安装:
<pre class="brush:php;toolbar:false;">composer require krlove/eloquent-model-generator --dev
安装完成后,你需要在
config/app.php
providers
<pre class="brush:php;toolbar:false;">// config/app.php
'providers' => [
// ...
KrloveEloquentModelGeneratorProviderGeneratorServiceProvider::class,
];确保你的
.env
config/database.php
krlove/eloquent-model-generator
现在,你可以使用 Artisan 命令来生成模型了。
生成单个模型:
假设你有一个名为
users
User
<pre class="brush:php;toolbar:false;">php artisan krlove:generate:model User
默认情况下,它会查找名为
users
app/Models
AppModelsUser.php
常用选项:
--table-name
<pre class="brush:php;toolbar:false;">php artisan krlove:generate:model User --table-name=user_accounts
--output-path
--namespace
output-path
app
<pre class="brush:php;toolbar:false;">php artisan krlove:generate:model Product --output-path=Domain/Products --namespace=App\Domain\Products
--base-class-name
IlluminateDatabaseEloquentModel
<pre class="brush:php;toolbar:false;">php artisan krlove:generate:model Post --base-class-name=App\BaseModel
--no-backup
*.php~
<pre class="brush:php;toolbar:false;">php artisan krlove:generate:model User --no-backup
--no-timestamps
public $timestamps = false;
--date-format
dateFormat
--connection
全局配置默认值:
你可以在
config/eloquent_model_generator.php
<pre class="brush:php;toolbar:false;">// config/eloquent_model_generator.php
<?php
return [
'namespace' => 'App\Models',
'base_class_name' => IlluminateDatabaseEloquentModel::class,
'output_path' => null, // null 表示默认路径
'no_timestamps' => null,
'date_format' => null,
'connection' => null,
'no_backup' => null,
'db_types' => [
// 注册自定义数据库类型,解决 "Unknown database type" 错误
// 'geometry' => 'string',
],
];生成所有模型:
如果你想为数据库中的所有表生成模型,可以使用
krlove:generate:models
<pre class="brush:php;toolbar:false;">php artisan krlove:generate:models
你也可以使用
--skip-table
migrations
<pre class="brush:php;toolbar:false;">php artisan krlove:generate:models --skip-table=users --skip-table=roles
对于更高级的需求,比如在每个生成的模型中自动添加一个特定的属性或方法,你可以实现
KrloveEloquentModelGeneratorProcessorProcessorInterface
引入
krlove/eloquent-model-generator
hasMany
belongsTo
krlove/eloquent-model-generator
以上就是如何解决手动创建LaravelEloquent模型费时费力的问题,使用krlove/eloquent-model-generator自动生成模型,大幅提升开发效率的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号