YII2 数据字典

数据字典用于构建类型即单层结构的分类,例如状态、分类等。常用构建方式分为常量设置、配置文件、数据库方式。数据字典参与到其他关联数据表字段时,当其自身发生改变,与之相关的字段值是需要批量进行调整的。因此可采用外键方式,使用其id作为关联。但是外键带来的隐患是当数据量大时,同步更新给数据库带来压力。因此采用程序方式批量更新。虽然本质上都是对数据库的操作,但可控性相比较而言较好。另外采用文件或常量配置的方式同样存在这种情况。综上所述,不推荐使用硬编码的方式将其写入。当然对其使用的方式,应该建立缓存以被系统其它模块正常使用。对于多层级的配置项目,使用无限分类和双向列表的方式,也是较为常见的,此处不过多涉及。

1 创建数据迁移

命令:yii migrate/create dict
文件:/console/migrations/m170522_192707_dict.php

<?php
use yii\db\Migration;
class m170522_192707_dict extends Migration
{
    const TBLNAEM = '{{%dict}}';
    public function safeUp()
    {
        $tableOptions = null;
        if($this->db->driverName === 'mysql'){
            $tableOptions = "CHARACTER SET utf8 COLLATE utf8_unicode_ci AUTO_INCREMENT=500 ENGINE=InnoDB";
        }
        $this->createTable(self::TBLNAEM, [
            'id'=>$this->primaryKey(),
            'name'=>$this->string(30)->notNull(),
            'alias'=>$this->string(30)->notNull(),
            'value'=>$this->string(30)->notNull(),
            'table'=>$this->string(30)->notNull(),
            'field'=>$this->string(30)->notNull(),
        ], $tableOptions);
    }
    public function safeDown()
    {
        $this->dropTable(self::TBLNAEM);
    }
}

AUTO_INCREMENT=500 预留前400项为系统内置或备用

CREATE TABLE `dict` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `alias` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `value` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `table` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  `field` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=500 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

字段解释

  • name 中文名称
  • aliase 英文名称,按常量方式,约定为大写方式
  • value 默认值
  • table 对应数据表
  • field 对应表字段
4933701-dbd8b18aefd8272e.png
数据字典

2 创建模型和CURD操作

由于字典在前后台都会使用,因此模型建立应保存到common目录下。

4933701-07b15a1c862eb59e.png
创建模型
4933701-e97239068ff354ec.png
CURD

3 功能设置

4933701-a22ad5caef3f82b6.png
数据字典v1.0

可建立remark字段,为字段用法补充说明。

4933701-5f0635e3d2cf3b27.png
数据字典v1.1

4 代码编写

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值