feat(scheme): 新增数据库表结构同步方案

This commit is contained in:
augushong
2026-01-09 21:08:51 +08:00
parent 1a39354287
commit 8de6b99bb3
24 changed files with 944 additions and 3 deletions

View File

@@ -0,0 +1,8 @@
<?php
namespace base\common\scheme;
abstract class BaseScheme
{
// 可以在这里添加一些通用的方法,例如获取所有字段定义的反射方法等
}

View File

@@ -0,0 +1,21 @@
<?php
namespace base\common\scheme\attribute;
use Attribute;
#[Attribute(Attribute::TARGET_PROPERTY)]
class Component
{
/**
* @param string $type 组件类型 (e.g. radio, image, editor)
* @param array $options 选项数据 (e.g. ['1'=>'男', '2'=>'女'])
* @param array $extra 额外参数
*/
public function __construct(
public string $type,
public array $options = [],
public array $extra = []
) {
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace base\common\scheme\attribute;
use Attribute;
#[Attribute(Attribute::TARGET_PROPERTY)]
class Field
{
public function __construct(
public string $type = 'varchar',
public ?int $length = null,
public int $precision = 0,
public int $scale = 0,
public bool $nullable = true,
public mixed $default = null,
public string $comment = '',
public bool $unsigned = false,
public bool $autoIncrement = false,
public bool $primary = false
) {
}
}

View File

@@ -0,0 +1,21 @@
<?php
namespace base\common\scheme\attribute;
use Attribute;
#[Attribute(Attribute::TARGET_CLASS | Attribute::IS_REPEATABLE)]
class Index
{
/**
* @param string|array $columns 索引包含的列,单个字符串或数组
* @param string $name 索引名称,留空则自动生成
* @param string $type 索引类型NORMAL, UNIQUE, FULLTEXT
*/
public function __construct(
public string|array $columns,
public string $name = '',
public string $type = 'NORMAL'
) {
}
}

View File

@@ -0,0 +1,19 @@
<?php
namespace base\common\scheme\attribute;
use Attribute;
#[Attribute(Attribute::TARGET_CLASS)]
class Table
{
public function __construct(
public string $name = '',
public string $comment = '',
public string $engine = 'InnoDB',
public string $charset = 'utf8mb4',
public string $collation = 'utf8mb4_general_ci',
public ?string $connection = null
) {
}
}