corex / lmodel
Laravel 模型(生成器、常量、保留行、phpdoc)
1.1.2
2018-04-25 17:33 UTC
Requires
- php: >=5.6.4
- doctrine/dbal: ^2.5
Requires (Dev)
- laravel/laravel: 5.4.*
- orchestra/testbench: ~3.0
- phpunit/phpunit: 5.7.*
README
本软件包的版本控制遵循 http://semver.org/。升级到主要版本可能会破坏向后兼容性。
连接到现有的数据库,并基于现有模式自动生成模型。
- 支持多连接。
- 支持通过魔法属性(phpdoc)进行自动完成。
- 支持自定义方法(保留行)。
- 支持受保护字段。
- 支持自定义 "extends"。
- 支持在魔法属性之后添加额外的字段属性。
- 支持在模型中构建常量。
- 支持自定义 "indent"。
- 支持保留 $timestamps 值。
- 支持类型为 "enum" 的列(映射为字符串)。
注意:生成已存在的模型将覆盖现有模型,但 "preserve" 标识符以下的每一行都将被保留。
安装
运行 "composer require corex/lmodel --dev"
。
添加配置文件 config/corex/lmodel.php 并将以下代码添加到其中。根据需要修改它。
return [ 'path' => base_path('app/Models'), 'namespace' => 'App\Models', 'addConnection' => true, 'extends' => \Illuminate\Database\Eloquent\Model::class, 'indent' => "\t", 'length' => 120, 'const' => [ '{connection}' => [ '{table}' => [ 'id' => '{id}', 'name' => '{name}', 'prefix' => '{prefix}', 'suffix' => '{suffix}', 'replace' => [ 'XXXX' => 'YYYY', ] ] ] ] ];
注意:旧配置文件 config/corex.php 仍然支持,但不再推荐。
设置
- path - 模型保存的位置。
- namespace - 模型的命名空间。
- addConnection - 如果应将数据库连接名称应用于命名空间/目录,则为 true/false。名称将自动转换为 PascalCase。
- extends - 要扩展的类。
- indent - (可选)用作缩进的字符串,例如 "\t"。默认为4个空格。
- length - (可选)行中断之前的行长度。用于具有许多字段的表。
- const - (可选)此部分用于指定应包含表格内容的常量的连接和表格。
- {connection} - (可选)连接名称。
- {table} - (可选)表名称。
- {id} - (必需)获取常量值的字段名称。
- {name} - (必需)获取常量名称的字段名称。
- {prefix} - (可选)添加到每个常量名称的前缀。
- {suffix} - (可选)添加到每个常量名称的后缀。
- replace - (可选)在常量名称中替换的值。
要注册它并确保仅在开发时可用此选项,请将以下代码添加到 AppServiceProvider@register 方法中。
if ($this->app->environment() == 'local') { $this->app->register('CoRex\Laravel\Model\ModelServiceProvider'); }
帮助
php artisan help make:models
参数
- connection: 从中生成模型的连接名称。它将被添加到命名空间/路径中,以便按连接分隔模型。可以通过将 addConnection 设置为 false 来禁用此功能。指定 "." 以从默认连接生成。
- tables: 要生成的逗号分隔的表名称。指定 "." 以生成所有表。
选项
- guarded: 受保护字段的逗号分隔列表。
示例
使用配置生成状态表的模型。
<?php namespace App\Models\Test; use Illuminate\Database\Eloquent\Model; /** * @property integer $id [TYPE=INTEGER, NULLABLE=0, DEFAULT=""] * @property string $name [TYPE=STRING, NULLABLE=0, DEFAULT=""] * @property string $value [TYPE=STRING, NULLABLE=0, DEFAULT=""] */ class Status extends Model { // Constants. const CONSTANT1 = 1; const CONSTANT2 = 2; const CONSTANT3 = 3; const CONSTANT4 = 4; // Attributes. public $timestamps = false; protected $connection = 'mysql'; protected $table = 'status'; protected $fillable = ['id', 'name', 'value']; protected $guarded = []; /* ---- Everything after this line will be preserved. ---- */ /** * Preserve this method. * * @return string */ public function preserveThisMethod() { return 'preserved'; } }