colorgreen / laravel-model-generator
本包的最新版本(v1.2.10)没有提供许可证信息。
生成模型
v1.2.10
2019-12-11 00:57 UTC
Requires
- laracademy/generators: ^1.3
This package is auto-updated.
Last update: 2024-09-11 15:51:27 UTC
README
这是一个基于laracademy/generators的简单生成器,扩展了模型生成功能。生成的模型类似于Yii框架中的模型。基于现有表创建或更新模型。
创建BaseModel和Model。如果表结构有变化,通过相同的命令重新生成模型(与首次生成相同)过程将仅影响BaseModel(新的规则、字段等),因此请在Model类中编写您的逻辑以防止覆盖。
还会为模型生成基础关系(关系 hasOne() 和 belongsTo() )。
列 parent_id 会生成到自身的关联,可以通过 parent() 获取
Base扩展了Colorgreen\Generator\Models\BaseModel,提供模型验证。
$model = new Model(); $model->email = "xxx"; if( !$model->save() ) print_r( $model->getErrors() ); // if validation will fail, e.g. output: // {"id":["The id field is required."],"email":["The email must be a valid email address."]}
或在API控制器中使用模型验证,例如store动作
public function store(Request $request) { $model = new Model(); $model->fill($request->all()); $model->getValidator()->validate(); $model->save(); return response()->json( [ 'message' => __('Success'), 'redirect' => route('model.edit', [$model] ) ] ); }
示例 'BaseModel'
<?php namespace App\Models\Base; use Colorgreen\Generator\Models\BaseModel; /** * Class BasePage * @property int id * @property string image * @property boolean active * @property int count * @property string email * @property int related_model_id * @property \App\Models\RelatedModel related_model */ class BasePage extends BaseModel { protected $attributes = [ 'email' => 'default_email', 'active' => 1, 'count' => 0 ]; protected static $rules = [ 'id' => 'required|numeric|integer', 'image' => 'nullable|string|max:255', 'active' => 'nullable|boolean', 'count' => 'nullable|numeric|integer', 'email' => 'required|string|max:100|email' ]; // samlple hasMany relation: check if relation shouldn't be OneToOne ( hasOne() ) public function pages() { return $this->hasMany('SmallElectron\Cms\Models\Page', 'redirect_type_id' ); } public function related_model() { return $this->belongsTo( App\Models\RelatedModel::class, 'related_model_id' ); } protected $table = 'pages'; protected $fillable = ['image', 'active', 'count', 'email']; protected $hidden = []; protected $casts = [ 'active' => 'boolean', 'count' => 'integer', 'related_model_id' => 'integer' ]; protected $dates = ['created_at', 'updated_at']; // set in to 'false' if model shouldn't be validated during save. // you can turn off validation on specific model using $model->setValidation(false) protected $validation = true; }
安装
composer require colorgreen/laravel-model-generator
使用
cgenerator:modelfromtable
此命令将读取您的数据库表并根据该表结构生成模型。自动填充字段、casts、dates以及命名空间。
您可以使用此命令一次性生成单个表、多个表或所有表。
- --name=
- 用于自定义模型名称。默认为studle_case格式的表名,并且是单数。例如,当表名为'pages'且您想将模型命名为
MyPage时,请使用--name=Page。 - 如果您使用此命令,请也在--table中提供一个表。
- 用于自定义模型名称。默认为studle_case格式的表名,并且是单数。例如,当表名为'pages'且您想将模型命名为
- --table=
- 如果填写此参数,将为给定的表生成模型。
- 您也可以通过逗号分隔值传递一个表列表。
- --base=
- 如果您想使用自定义BaseModel,请使用此选项。例如,--base=\App\Models\MyBaseModel。
- --prefix=
- 设置表的名称前缀。例如,表 'cms_user_permissions' 将生成模型 'UserPermission'。
- 注意,使用--prefix选项与--all选项一起使用时,只会为以指定前缀开始的表生成模型。
- --all
- 如果此标志存在,则将忽略表命令。
- 这将为您数据库中找到的所有表生成模型。
- 如果设置了--prefix,则关系将仅在前缀表之间建立
- --connection=
- 默认情况下,如果省略此选项,则生成器将使用在
config/database.php中找到的默认连接。 - 要指定一个连接,请确保它在您的
config/database.php中首先存在。
- 默认情况下,如果省略此选项,则生成器将使用在
- --folder=
- 默认情况下,所有模型都存储在您的app/目录中。如果您希望将它们存储在其他位置,您可以提供从您的基Laravel应用程序的相对路径。
- 请参阅示例以获取更多信息
- --namespace=
- 默认情况下,所有模型都将具有App命名空间
- 您可以通过添加此选项来更改命名空间
- --debug
- 在运行时显示更多信息
示例
生成单个表
php artisan cgenerator:modelfromtable --table=users
将生成名为User的模型
生成具有自定义模型名称的单个表
php artisan cgenerator:modelfromtable --model_name=MyUser --table=users
生成多个表
php artisan cgenerator:modelfromtable --table=users,posts
生成所有表
php artisan cgenerator:modelfromtable --all
从具有前缀的表中生成模型
php artisan cgenerator:modelfromtable --all --prefix=foo_
对于表:blog_posts, blog_comments, shop_products, users,命令 php artisan generate:modelfromtable --all --prefix=blog_ 将仅生成blog_posts和blog_comments的模型,模型 Post 和 Comment
更改到在database.php中找到的另一个连接并生成所有表的模型
php artisan cgenerator:modelfromtable --connection=spark --all
更改到/app/Models的文件夹
php artisan cgenerator:modelfromtable --table=user --folder=app\Models
致谢
许可证
免费使用