首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 PHP语言发展历史及其适合的应用领域
1.2 什么是框架
1.3 为什么要用框架开发
1.4 自定义框架
1.4.1 MVC框架模式的实现
1.4.2 入口文件
1.4.3 应用(前端控制器)
1.4.4 从自定义框架到Yii2框架
2.1 Yii简介
2.1.1 什么是Yii框架技术
2.1.2 Yii2的优点
2.1.3 应用案例
2.2 下载Yii2
2.3 运行应用
2.4 输出“Hello World”
2.5 入口文件
2.6 应用主体
2.7 MVC框架模式
2.8 Yii2框架中的控制器
2.9 Yii2框架中的视图
2.10 项目实现迭代一:渲染首页、列表页和内容页视图
3.1 布局概述
3.2 项目实现迭代二:创建并使用布局渲染首页视图
3.3 Controller类的render()方法执行流程
3.4 应用级布局
3.5 嵌套布局
3.6 项目实现迭代三:使用嵌套布局渲染“新闻中心”列表页
3.7 视图文件的存储路径
4.1 模块概述
4.2 使用Gii创建模块
4.3 模块中的资源文件
4.4 项目实现迭代四:文章管理
5.1 ActiveRecord模型概述
5.2 通过CRUD(增查改删)操作理解ActiveRecord类
5.2.1 文章表(ds_article)
5.2.2 在配置文件中初始化数据库连接
5.2.3 创建ActiveRecord模型
5.2.4 通过查询操作理解ActiveRecord类
5.2.5 通过插入和更新操作理解ActiveRecord类
5.2.6 通过删除操作理解ActiveRecord类
5.3 项目实现迭代五:首页“行业百科”数据查询
5.4 项目实现迭代六:在“文章添加”页面实现数据插入
6.1 ActiveRecord模型类的find()方法与查询执行流程
6.2 查询方法find()实例
6.2.1 实现带有逻辑运算符和比较运算符的查询
6.2.2 实现范围比较查询
6.2.3 实现模糊查询
6.3 查询构建类ActiveQuery
6.3.1 ActiveQuery成员属性简介
6.3.2 ActiveQuery成员方法简介
6.3.3 Query类where()成员方法简介
6.4 关联查询
6.5 项目实现迭代七:完成首页中的数据填充
6.5.1 实现幻灯片切换
6.5.2 实现成功案例
6.5.3 实现其他栏目的文章内容查询
当前位置:
首页>>
技术小册>>
Yii2框架从入门到精通(上)
小册名称:Yii2框架从入门到精通(上)
### 5.2.3 创建ActiveRecord模型 在Yii2框架中,ActiveRecord是一种基于数据库表的面向对象编程(OOP)模式,它使得对数据库的操作更加直观和方便。通过继承Yii2的`\yii\db\ActiveRecord`类,你可以为你的数据库表创建模型类,这些模型类不仅封装了数据库表的数据,还提供了丰富的数据操作方法,如查询、插入、更新和删除等。在本章节中,我们将详细讲解如何创建和使用ActiveRecord模型。 #### 5.2.3.1 理解ActiveRecord 在深入探讨如何创建ActiveRecord模型之前,首先需要理解ActiveRecord的基本概念。ActiveRecord模式的核心思想是,每个数据库表都对应一个类,这个类的实例对应于表中的一行数据。通过这个类,你可以很方便地操作对应的数据表,包括数据的查询、新增、更新和删除等。 Yii2的ActiveRecord类`\yii\db\ActiveRecord`实现了ActiveRecord模式,它提供了基本的CRUD(Create, Read, Update, Delete)操作以及关系查询等功能。通过继承这个类,你可以轻松地为你的数据库表创建模型。 #### 5.2.3.2 创建ActiveRecord模型类 创建ActiveRecord模型类的过程相对简单,主要涉及到定义模型类并设置其属性与数据库表的映射关系。以下是一个基本的步骤指南: ##### 1. 定义模型类 首先,你需要在你的应用程序的`models`目录下(或者你自定义的模型存放目录)创建一个新的PHP类文件。这个类需要继承`\yii\db\ActiveRecord`。 例如,假设你有一个名为`user`的数据库表,你可以创建一个名为`User`的模型类: ```php namespace app\models; use Yii; use yii\db\ActiveRecord; class User extends ActiveRecord { // 类的其他部分... } ``` ##### 2. 设置表名 默认情况下,Yii2的ActiveRecord模型会尝试将类名(去除命名空间部分,并将驼峰命名转换为下划线分隔)作为数据库表名。但如果你想要使用不同的表名,可以通过重写`tableName()`方法来实现。 ```php public static function tableName() { return '{{%user}}'; } ``` 这里使用了`{{%tableName}}`的格式,其中`%tableName`是一个占位符,Yii2会在查询时自动替换为实际的表名,并且支持表前缀的设置(在数据库配置中定义)。 ##### 3. 定义模型属性 虽然Yii2的ActiveRecord能够自动从数据库表中推断出属性,但通常建议在模型中明确声明这些属性,以便使用IDE的代码自动完成功能,以及提高代码的可读性和可维护性。 你可以通过定义类的公有属性或者getter和setter方法来声明这些属性。然而,对于大多数场景,Yii2的ActiveRecord会自动处理属性的映射,因此你通常不需要显式声明它们。 ##### 4. 规则与验证 在模型中,你可以定义验证规则来确保数据的正确性。这些规则通过重写`rules()`方法来定义。 ```php public function rules() { return [ [['username', 'email'], 'required'], ['email', 'email'], ['username', 'unique', 'targetClass' => '\app\models\User', 'message' => 'This username has already been taken.'], ]; } ``` 在上面的例子中,我们定义了三条验证规则:`username`和`email`字段是必填的,`email`字段必须是有效的电子邮件地址,`username`字段在数据库中必须是唯一的。 ##### 5. 场景 Yii2的ActiveRecord还支持场景(Scenario)的概念,允许你在不同的上下文中应用不同的验证规则。通过定义`scenarios()`方法,你可以为模型指定不同的场景以及每个场景下需要应用的验证规则。 ```php public function scenarios() { $scenarios = parent::scenarios(); $scenarios['create'] = ['username', 'email']; $scenarios['update'] = ['username', 'email']; return $scenarios; } ``` #### 5.2.3.3 使用ActiveRecord模型 创建了ActiveRecord模型之后,你就可以在应用程序中使用它来操作数据库了。以下是一些常用的操作示例: ##### 1. 查询数据 ```php // 查询所有用户 $users = User::find()->all(); // 使用条件查询 $user = User::find()->where(['username' => 'example'])->one(); // 使用链式调用 $activeUsers = User::find() ->where(['status' => 1]) ->orderBy('created_at DESC') ->limit(10) ->all(); ``` ##### 2. 新增数据 ```php $user = new User(); $user->username = 'newuser'; $user->email = 'newuser@example.com'; $user->save(); ``` ##### 3. 更新数据 ```php $user = User::findOne(['id' => 1]); $user->email = 'updateduser@example.com'; $user->save(); ``` ##### 4. 删除数据 ```php $user = User::findOne(['id' => 1]); $user->delete(); // 或者直接通过查询条件删除 User::deleteAll(['status' => 0]); ``` #### 5.2.3.4 总结 在本章节中,我们详细介绍了如何在Yii2框架中创建和使用ActiveRecord模型。通过继承`\yii\db\ActiveRecord`类,并设置表名、定义验证规则等,你可以轻松地为你的数据库表创建模型。这些模型不仅封装了数据库表的数据,还提供了丰富的数据操作方法,使得数据库操作变得更加简单和直观。希望本章内容能帮助你更好地理解和使用Yii2的ActiveRecord模式。
上一篇:
5.2.2 在配置文件中初始化数据库连接
下一篇:
5.2.4 通过查询操作理解ActiveRecord类
该分类下的相关小册推荐:
PHP8入门与项目实战(5)
PHP8入门与项目实战(8)
PHP8入门与项目实战(7)
全面掌握Magento2-从配置到优化
Workerman高性能框架-GatewayWorker
Laravel(10.x)从入门到精通(九)
Magento2后端开发高级实战
全栈工程师修炼指南
Laravel(10.x)从入门到精通(六)
ThinkPHP项目开发实战
Laravel(10.x)从入门到精通(十六)
Magento零基础到架构师(目录管理)