codegaf / crudgenerator
Laravel级别的后端完整CRUD创建命令。
Requires
- php: ^7.2.5
- laravel/framework: >=8.0.4
Requires (Dev)
- orchestra/testbench: ^4.0
- phpunit/phpunit: ^9.0
This package is auto-updated.
Last update: 2024-09-20 12:51:55 UTC
README
为10codesoftware生成后端CRUD。
安装
您可以通过Composer安装此包
composer require codegaf/crudgenerator
使用指南
后端部分的crud generator命令会生成以下类
- 迁移。
- 模型。
- 控制器。
- 服务。
- 仓库。
- 数据表。
- 请求。
- 工厂。
迁移类将直接存入database/migrations目录。模型类将存入app/models目录。其他类将按照约定存入相应的目录。例如:users的crud generator控制器将存入UserController/UserController.php。
crud generator需要一些预先数据才能正常工作。这些数据将在位于config/models目录的config模板中指定。文件名将遵循单数驼峰命名约定。例如:user, userContact, car… 假设用户有联系人,关系为1:N,一个用户可以有多个联系人,每个联系人都属于一个用户。
重要:如同Laravel中的任何config文件,每次修改与crud generator相关的config文件后,都需要调用命令
php artisan config:cache
如果执行crud generator且未调用Laravel重建缓存命令,则更改不会产生预期效果。
迁移索引。
1.列
columns数组的索引包含数据库中列的名称。每个列将考虑以下选项
-
type -> String. 必须的。数据库中列的类型。与迁移中指定的类型相同,即接受Laravel接受的所有类型。$table->string, $table->text, $table->integer…
-
nullable -> Booleano. 可选的。如果指定此选项并将其设置为true,则数据库中的列将是可空的。如果没有指定此选项或将其设置为false,则列将不可空。
-
unique -> Booleano. 可选的。如果指定此选项并将其设置为true,则数据库中的列将是唯一的。如果没有指定此选项或将其设置为false,则列将不会是唯一的。
-
default -> String|Integer|Boolean… 可选的。如果指定此选项并设置一个值,则将在数据库列中添加一个默认值。
2.外键
foreigns数组的索引收集外键类型的列。此索引不是必须添加的。只有对于具有关系的表,才需要添加。每个外键数组的选项将是
-
references -> String. 必须的。是外键与另一表中列的关系。
-
table -> String. 必须的。是与外键相关联的表名。
-
onDelete -> String. 必须的。如果删除行,将执行的关系操作。此索引是必须指定的,但如果不需要任何操作,可以留空。
'migration' => [ 'columns' => [ 'name' => [ 'type' => 'string', 'nullable' => false, 'default' => 'string|integer|boolean...' ], 'surname' => [ 'type' => 'string', 'nullable' => false, 'unique' => false, ], 'email' => [ 'type' => 'string', ], 'phone' => [ 'type' => 'string', 'nullable' => true, ], 'born_date' => [ 'type' => 'date', ], 'user_id' => [ 'type' => 'unsignedBigInteger', ] ], 'foreigns' => [ 'user_id' => [ 'references' => 'id', 'table' => 'users', 'onDelete' => 'cascade' ] ] ],
3.模型
model索引将允许我们指定如下fillable和关系
- fillable -> String. 必须的。在此索引中,我们将指定要存储在数据库中的列。例如
‘model’ => [ ‘fillable’ => ['name', 'surname', 'email', 'phone', 'born_date', 'user_id'], ],
- 关系 -> 数组。可选。在这个索引中,我们可以指定与其他实体的关系。relations数组中的索引将是Laravel考虑的关系名称。例如:belongsTo、hasMany、hasOne、belongsToMany...
此数组可以有以下选项
-
functionName -> String。必需。是函数名称。例如:public function users…
-
modelClass -> String。必需。是关系的目标类。例如:User::class。
-
foreign -> String。必需。是外键列。例如:user_id
‘model’ => [ ‘fillable’ => ['name', 'surname', 'email', 'phone', 'born_date', 'user_id'], ‘relations’ => [ 0 => [ ‘relation’ => ‘belongsTo’, ‘functionName’ => ‘user’, ‘modelClass’ => ‘User::class’, ‘foreign’ => ‘user_id’ ], 1 => ... ], ],
对于belongsToMany关系,我们有以下选项可用
-
table -> String。必需。是中间表名称。
-
foreignKey -> String。必需。是外键名称。
-
relationKey -> String。必需。是模型键名称。
-
pivot -> String。可选。如果中间表有pivot列,可以在这里设置。
‘model’ => [ ‘fillable’ => ['name', 'surname', 'email', 'phone', 'born_date', 'user_id'], ‘relations’ => [ 0 => [ ‘relation’ => ‘belongsToMany’, ‘functionName’ => ‘user’, ‘modelClass’ => ‘User::class’, ’table’ => ’users_contacts’, ‘foreignKey’ => ‘user_id’, ‘relationKey’ => ‘friend_id’, ‘pivot’ => ‘friendship_date, active’ ], 1 => ... ], ],
对于多态关系,我们有以下结构可用
- morphTo
‘model’ => [ ‘fillable’ => ['name', 'surname', 'email', 'phone', 'born_date', 'user_id'], ‘relations’ => [ 0 => [ ‘relation’ => ‘morphTo’, ‘functionName’ => ‘imageable’, ], 1 => ... ], ],
- morphOne, morphMany, morphToMany, morphedByMany
‘model’ => [ ‘fillable’ => ['name', 'surname', 'email', 'phone', 'born_date', 'user_id'], ‘relations’ => [ 0 => [ ‘relation’ => ‘morphOne’, // morphMany, morphToMany, morphedByMany ‘functionName’ => ‘image’, ‘modelClass’ => ‘User::class’, ’name’ => ’imageable’, ], 1 => ... ], ],
13.DataTables
模板相对于我们迄今为止使用的datatables方法有一个新特性。这次实例化和准备都在后端进行。为了让crud generator执行此任务,我们必须将以下结构添加到config中。
dataTables数组的索引是数据库中的列名称或我们在查询中给出的字段别名。这些数组本身还有一个索引,允许指定列标签。不需要指定动作列。crud generator已经自动考虑了它。如果不需要,可以在生成类DataTable后删除它。
- label -> String。必需。以lang格式传递列名,以供视图显示。
'dataTables' => [ 'name' => [ 'label' => 'global.name' ], 'surname' => [ 'label' => 'global.surname' ], 'email' => [ 'label' => 'global.label' ], 'phone' => [ 'label' => 'global.phone' ], 'born_date' => [ 'label' => 'global.born_date' ], 'created_at' => [ 'label' => 'global.created_at' ] ],
配置正确文件后,在config/models中可以执行以下指示的命令。
为了使config文件中的更改生效,我们需要清理Laravel的config缓存。
php artisan config:cache
要执行完整命令,请添加--all选项。模型名称必须使用PascalCase(Car, UserContact)指定。
php artisan crud:generator Model --all
如果不需要执行所有文件,请忽略--all选项。终端将询问我们想要生成哪些文件。
php artisan crud:generator Model
destroy crud命令
如果你在crud的早期阶段犯了错误,可以使用一个命令来删除整个crud(除了database文件夹中的migrations)。迁移文件没有被删除的原因是它包含了一个动态部分,它引用了创建时的timestamp。
命令执行方式如下
php artisan destroy:crud Model
- model -> 必需。model引用了crud的模型,格式为大写、单数和驼峰式。
系统会在执行过程之前要求确认。请记住,这个动作会删除整个crud,因此需要权衡,如果crud已经进展,是否值得执行该命令。由于迁移文件包含动态部分,destroy:crud命令无法删除它。必须手动删除。
更新日志
请参阅更新日志以获取有关最近更改的更多信息。
安全性
如果你发现任何与安全相关的问题,请通过isaaccamrod@gmail.com发送电子邮件,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。
Laravel Package Boilerplate
此包是使用Laravel Package Boilerplate生成的。