mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-12-01 11:17:54 +08:00
c224ba6922
* v2.0.4 * Translate Co-authored-by: huangzhhui <huangzhwork@gmail.com>
4.6 KiB
4.6 KiB
模型創建腳本
Hyperf 提供了創建模型的命令,您可以很方便的根據數據表創建對應模型。命令通過 AST
生成模型,所以當您增加了某些方法後,也可以使用腳本方便的重置模型。
php bin/hyperf.php gen:model table_name
創建模型
可選參數如下:
參數 | 類型 | 默認值 | 備註 |
---|---|---|---|
--pool | string | default |
連接池,腳本會根據當前連接池配置創建 |
--path | string | app/Model |
模型路徑 |
--force-casts | bool | false |
是否強制重置 casts 參數 |
--prefix | string | 空字符串 | 表前綴 |
--inheritance | string | Model |
父類 |
--uses | string | Hyperf\DbConnection\Model\Model |
配合 inheritance 使用 |
--refresh-fillable | bool | false |
是否刷新 fillable 參數 |
--table-mapping | array | [] |
為表名 -> 模型增加映射關係 比如 ['users:Account'] |
--ignore-tables | array | [] |
不需要生成模型的表名 比如 ['users'] |
--with-comments | bool | false |
是否增加字段註釋 |
--property-case | int | 0 |
字段類型 0 蛇形 1 駝峯 |
當使用 --property-case
將字段類型轉化為駝峯時,還需要手動在模型中加入 Hyperf\Database\Model\Concerns\CamelCase
。
對應配置也可以配置到 databases.{pool}.commands.gen:model
中,如下
中劃線都需要轉化為下劃線
<?php
declare(strict_types=1);
use Hyperf\Database\Commands\ModelOption;
return [
'default' => [
// 忽略其他配置
'commands' => [
'gen:model' => [
'path' => 'app/Model',
'force_casts' => true,
'inheritance' => 'Model',
'uses' => '',
'refresh_fillable' => true,
'table_mapping' => [],
'with_comments' => true,
'property_case' => ModelOption::PROPERTY_SNAKE_CASE,
],
],
],
];
創建的模型如下
<?php
declare(strict_types=1);
namespace App\Model;
use Hyperf\DbConnection\Model\Model;
/**
* @property $id
* @property $name
* @property $gender
* @property $created_at
* @property $updated_at
*/
class User extends Model
{
/**
* The table associated with the model.
*
* @var string
*/
protected $table = 'user';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = ['id', 'name', 'gender', 'created_at', 'updated_at'];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = ['id' => 'integer', 'gender' => 'integer'];
}
Visitors
框架提供了幾個 Visitors
,方便用户對腳本能力進行擴展。使用方法很簡單,只需要在 visitors
配置中,添加對應的 Visitor
即可。
<?php
declare(strict_types=1);
return [
'default' => [
// 忽略其他配置
'commands' => [
'gen:model' => [
'visitors' => [
Hyperf\Database\Commands\Ast\ModelRewriteKeyInfoVisitor::class
],
],
],
],
];
可選 Visitors
- Hyperf\Database\Commands\Ast\ModelRewriteKeyInfoVisitor
此 Visitor
可以根據數據庫中主鍵,生成對應的 $incrementing
$primaryKey
和 $keyType
。
- Hyperf\Database\Commands\Ast\ModelRewriteSoftDeletesVisitor
此 Visitor
可以根據 DELETED_AT
常量判斷該模型是否含有軟刪除字段,如果存在,則添加對應的 Trait SoftDeletes
。
- Hyperf\Database\Commands\Ast\ModelRewriteTimestampsVisitor
此 Visitor
可以根據 created_at
和 updated_at
自動判斷,是否啟用默認記錄 創建和修改時間
的功能。