1.开发目的
开发出来一个类似如图的表格,在其中增加增删改查的功能。大概实施路径:MySQL数据库导入数据,修改关键词,对列名做出约束;在做出在原有的其他板块下查看并copy所需代码,对关键词做修改;在前端管理员界面添加路由,菜单和部署角色。
2.开发途径
第一步 数据库字段设计
这边需要做一个用户等级的表设计,总共设计了12个字段,字符集采用的utf8mb4,排序规则用的utf8mb4_unicode_ci。
utf8mb4
是 MySQL 数据库中的一种字符集,它支持完整的 UTF-8 编码,包括 1 到 4 字节的字符。相比于 utf8
,utf8mb4
能够更好地支持包括表情符号(Emoji)在内的各种特殊字符。
为什么使用 utf8mb4
而不是 utf8
?
- 标准 UTF-8 支持:
utf8mb4
是真正的 UTF-8 编码,能够编码所有有效的 Unicode 字符,包括一些特殊符号、表情符号和历史字符。 utf8
的局限性:MySQL 的utf8
编码实际上只支持 1 到 3 字节的字符,而标准的 UTF-8 支持 1 到 4 字节的字符。这意味着使用utf8
编码的 MySQL 数据库无法正确存储 4 字节的字符,例如某些表情符号。unicode
排序规则:这是指 Unicode 排序规则,基于 Unicode 标准进行排序和比较,能够正确处理多种语言和字符。ci
(Case Insensitive):表示不区分大小写(case insensitive)的排序规则。这意味着在进行字符串比较时,大写字母和小写字母被认为是相同的。
在数据库设计时没有用外键,约束只有id字段主键设置了约束。
在数据库里设计字段时加太多约束和外键容易跑不动,累死数据库。所以相关需要字段联系的地方在程序内完成。
第二步 PHP框架设计
首先介绍一下
MVC架构,在做php编码时需要用到。
在Yii2框架中,MVC架构分为模型(Model)、视图(View)和控制器(Controller)。下面我将详细介绍如何使用MVC架构实现数据库连接、数据处理和数据展示。
首先在common目录下的models文件夹写文件ClientLevel,在backend目录下的models文件夹下写文件ClientLevelSearch,model文件写完,之后来回要调用。
然后在backend目录下的conllers文件夹下写文件ClientLevelController。
最后在backend目录下的views文件夹下写文件index,view,_form,update,create。
创立文件
后填写内容。(可看可不看,可以参考别的大神,搜关键词MVC)
在Yii2框架中,MVC架构分为模型(Model)、视图(View)和控制器(Controller)。下面我将详细介绍如何使用MVC架构实现数据库连接、数据处理和数据展示。
1. 模型(Model)
首先,我们创建一个模型类来表示数据库中的表。例如,假设我们有一个`client_level`表。
创立ClientLevel文件
<?php namespace common\models; use yii\behaviors\BlameableBehavior; use yii\behaviors\TimestampBehavior; use yii\db\ActiveRecord; use yii\db\Expression; /** * Class Client Level * @package common\models * @property int id * @property int level * @property int name * @property int remark * @property int expiry * @property number discount * @property number rate * @property int created_by * @property int updated_by * @property \DateTime created_at * @property \DateTime updated_at * @property int deleted */ class ClientLevel extends ActiveRecord { public static function tableName() { return '{{%tt_client_level}}'; } public function behaviors() { return [ [ 'class' => TimestampBehavior::class, 'value' => new Expression('NOW()'), ], [ 'class' => BlameableBehavior::class, ], ]; } public function rules() { return [ [['id','level','created_by','updated_by','deleted'], 'integer'], [['remark','name'], 'string', 'max' => 50], [['created_at','updated_at','expiry'], 'date', 'format'=>'yyyy-MM-dd HH:mm:ss'], [['expiry'], 'integer', 'min' => 1], [['rate','discount'], 'number'], [['level','name','rate'], 'required'], [['id','level'],'unique'] ]; } public function attributeLabels() { return [ 'level'=>'会员等级', 'name' => '会员', 'remark' => '备注', 'rate'=>'会员——积分换算比', 'discount'=>'折扣比', 'expiry' => '有效期/月', 'created_at' => '创建时间', 'updated_at' => '更新时间', ]; } }
通过上述步骤,我们在Yii2框架的MVC架构中成功实现了数据库连接、数据处理和数据展示。你可以根据实际需求进一步扩展和优化代码,例如增加数据的创建、更新和删除功能。
细节叙述
ClientLevel
ClientLevel下要使用命名空间和关键方法。接着参数说明,
数据库导入,
字段类型说明,字段统一
必要时添加时间戳
ClientLevelSearch
ClientLevelSearch下