// +---------------------------------------------------------------------- declare(strict_types=1); namespace app\appmall\model; use app\appmall\library\AppmallSchema; use ywxapp\model\BaseModel; /** * 插件提交审核单(中心站) * 表:appmall_addon_submissions * @mixin \think\Model */ class AddonSubmission extends BaseModel { protected function getOptions(): array { return [ 'strict' => true, 'name' => 'appmall_addon_submissions', 'autoWriteTimestamp' => 'int', 'createTime' => 'create_at', 'updateTime' => 'update_at', ]; } /** * 表结构自愈:缺表建表 + 老库扩展列补齐(事实源 app/appmall/install.sql)。 */ public static function ensureSchema(): void { AppmallSchema::ensureTable('appmall_addon_submissions', [ 'changelog' => "text COMMENT '更新日志'", 'require_framework' => "varchar(20) DEFAULT '' COMMENT '最低兼容框架版本,如 1.2.0'", 'type' => "varchar(20) NOT NULL DEFAULT 'addon' COMMENT '商品类型:addon=插件 template=模板'", ]); } /** * 模型一被使用(含静态查询)就先兜底建表,任何入口都不会再撞 1146。 */ protected function initialize() { parent::initialize(); self::ensureSchema(); } /** * 关联提交者(appmall_developers) * @return \think\model\relation\BelongsTo */ public function developer() { return $this->belongsTo(Developer::class, 'developer_id', 'id'); } /** * 关联审核历史(appmall_addon_review_log) * @return \think\model\relation\HasMany */ public function reviewLogs() { return $this->hasMany(AddonReviewLog::class, 'submission_id', 'id'); } }