// +---------------------------------------------------------------------- declare(strict_types=1); namespace app\appmall\model; use app\appmall\library\AppmallSchema; use ywxapp\model\BaseModel; /** * 主框架版本(中心站,整包 / 增量补丁 / 完整安装包同版本共存) * 表:appmall_framework_list * @mixin \think\Model */ class FrameworkList extends BaseModel { protected function getOptions(): array { return [ 'strict' => true, 'name' => 'appmall_framework_list', 'autoWriteTimestamp' => 'int', 'createTime' => 'create_at', 'updateTime' => 'update_at', ]; } /** * 表结构自愈:缺表建表 + 老库扩展列补齐(事实源 app/appmall/install.sql)。 */ public static function ensureSchema(): void { AppmallSchema::ensureTable('appmall_framework_list', [ 'type' => "tinyint DEFAULT 0 COMMENT '0=整包 1=补丁'", 'from_version' => "varchar(20) DEFAULT '' COMMENT '补丁基础版本'", 'patch_path' => "varchar(255) DEFAULT '' COMMENT '增量补丁 zip 物理路径'", 'patch_hash' => "varchar(64) DEFAULT '' COMMENT '补丁 SHA256 校验值'", 'patch_from' => "varchar(20) DEFAULT '' COMMENT '补丁适用的基础版本'", 'install_path' => "varchar(255) DEFAULT '' COMMENT '完整安装包 zip 物理路径'", 'install_hash' => "varchar(64) DEFAULT '' COMMENT '完整安装包 SHA256 校验值'", ]); } /** * 模型一被使用(含静态查询)就先兜底建表,任何入口都不会再撞 1146。 */ protected function initialize() { parent::initialize(); self::ensureSchema(); } }