Yii2中使用ActiveRecord需五步:一、配置config/db.php数据库连接;二、创建继承yii\db\ActiveRecord的模型类并重写tableName();三、用Gii生成模型;四、调用findOne()、find()->all()、save()、delete()等方法操作数据;五、通过migration管理表结构变更。

如果您希望在 Yii2 应用中以面向对象方式操作数据库表,ActiveRecord 模式提供了直接映射表结构到 PHP 类的机制。以下是实现该模式的具体方法:
一、配置数据库连接
ActiveRecord 依赖底层数据库连接,必须先在 config/db.php 中正确配置数据库参数,确保框架能建立与 MySQL 或其他兼容数据库的通信。
1、打开项目根目录下的 config/db.php 文件。
2、确认返回数组中包含 'class' => 'yii\db\Connection' 及完整 DSN、用户名、密码和字符集设置。
3、确保 'charset' => 'utf8' 或 'charset' => 'utf8mb4' 已明确指定,避免中文存储异常。
二、创建 ActiveRecord 模型类
每个数据库表需对应一个继承自 yii\db\ActiveRecord 的 PHP 类,该类自动绑定表名并提供查询、保存、删除等能力。
1、在 models/ 目录下新建 PHP 文件,例如 User.php。
2、定义类并继承 yii\db\ActiveRecord,如 class User extends \yii\db\ActiveRecord。
3、在类中重写 tableName() 方法,返回对应数据表名,例如 return 'user';。
三、使用 Gii 自动生成模型
Gii 是 Yii2 官方提供的代码生成工具,可快速创建符合命名规范与数据库结构的 ActiveRecord 模型,减少手动编码错误。
1、确保 config/web.php 中已启用 Gii 模块且仅在开发环境开放。
2、访问 http://localhost/your-app/web/index.php?r=gii(路径依实际部署调整)。
3、点击 Model Generator,输入数据表名(如 user),设置模型类名(如 User)及命名空间(如 app\models)。
4、点击 Preview 确认生成内容,再点击 Generate 完成创建。
四、执行基本数据库操作
基于已定义的 ActiveRecord 模型,可通过静态方法或实例方法完成增删改查,所有操作均自动适配当前数据库驱动。
1、查询单条记录:调用 User::findOne($id),若无匹配行则返回 null,使用前须判空。
2、查询多条记录:使用 User::find()->where(['status' => 1])->all() 获取对象数组。
3、插入新记录:实例化后赋值并调用 $user = new User(); $user->name = 'John'; $user->save();。
4、更新记录:获取对象后修改属性并再次调用 save(),框架自动识别为 UPDATE 语句。
5、删除记录:调用 $user->delete() 执行物理删除,或通过 updateAll() 批量软删。
五、使用 Migration 管理表结构变更
当数据库表结构需要版本化演进时,Migration 提供了可回滚的 SQL 变更脚本,确保 ActiveRecord 模型与表结构长期一致。
1、在命令行执行 ./yii migrate/create create_user_table 生成迁移文件。
2、编辑生成的文件,在 up() 方法中调用 $this->createTable('user', [...]) 定义字段。
3、运行 ./yii migrate 应用变更,框架自动记录 migration 版本至 migration 表。
4、若需撤销,执行 ./yii migrate/down 触发 down() 方法中的逆向操作。











