itm2018 / eloquent-model-generator-for-lumen
Eloquent 模型生成器,基于 asamaru7/eloquent-model-generator 分支
1.0.8
2018-05-11 03:32 UTC
Requires
- doctrine/dbal: ^2.5
- krlove/code-generator: ^1.0
README
Eloquent 模型生成器是一个基于 Code Generator 的工具,用于生成 Eloquent 模型。
安装
步骤 1. 将 Eloquent 模型生成器添加到您的项目中
composer require itm2018/eloquent-model-generator-for-lumen --dev
步骤 2. 注册 GeneratorServiceProvider
'providers' => [ // ... Krlove\EloquentModelGenerator\Provider\GeneratorServiceProvider::class, ];
步骤 3. 配置您的数据库连接。
使用
使用
php artisan krlove:generate:model User
来生成一个模型类。生成器将寻找名为 users
的表并为其生成一个模型。您可以通过提供 table-name
选项来指定另一个表名
php artisan krlove:generate:model User --table-name=user
在这种情况下,生成的模型将包含 protected $table = 'user'
属性。
生成的文件将被保存在应用程序的 app
目录中,并具有 App
命名空间。如果您想更改目标目录和命名空间,分别提供 output-path
和 namespace
选项
php artisan krlove:generate:model User --output-path=/full/path/to/output/directory --namespace=Some\\Other\\NSpace
默认情况下,生成的类将扩展自 Illuminate\Database\Eloquent\Model
。要更改基类,指定 base-class-name
选项
php artisan krlove:generate:model User --base-class-name=Some\\Other\\Base\\Model
有几个有用的选项可以定义多个模型的属性
no-timestamps
- 向模型添加public $timestamps = false;
属性date-format
- 指定模型的dateFormat
属性connection
- 指定模型的连接名称属性
您不必每次执行命令时都指定选项,可以创建一个包含您自己的默认值的配置文件,并通过指定 config
选项来传递它。生成器已经包含其自己的配置文件在 Resources/config.php
<?php return [ 'namespace' => 'App', 'base_class_name' => \Illuminate\Database\Eloquent\Model::class, 'output_path' => null, 'no_timestamps' => null, 'date_format' => null, 'connection' => null, ];
其值可以被您的自己的配置覆盖(例如,<your-base-dir>/config/eloquent_model_generator.php
)
<?php return [ 'namespace' => 'Some\\Other\\Namespace', 'base_class_name' => 'Some\\Other\\ClassName', 'output_path' => '/full/path/to/output/directory', 'no_timestamps' => true, 'date_format' => 'U', 'connection' => 'other-connection', ];
php artisan krlove:generate:model User --config=<your-base-dir>/config/eloquent_model_generator.php
使用示例
表 user
CREATE TABLE `user` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(50) NOT NULL, `email` varchar(100) NOT NULL, `role_id` int(10) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `role_id` (`role_id`), CONSTRAINT `user_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8
命令
php artisan krlove:generate:model User --table-name=user
结果
<?php namespace App; use Illuminate\Database\Eloquent\Model; /** * @property int $id * @property int $role_id * @property mixed $username * @property mixed $email * @property Role $role * @property Article[] $articles * @property Comment[] $comments */ class User extends Model { /** * The table associated with the model. * * @var string */ protected $table = 'user'; /** * @var array */ protected $fillable = ['role_id', 'username', 'email']; /** * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function role() { return $this->belongsTo('Role'); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function articles() { return $this->hasMany('Article'); } /** * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function comments() { return $this->hasMany('Comment'); } }