首页
技术小册
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.1 ActiveRecord模型概述 在Yii2框架的广阔世界中,ActiveRecord是一个核心概念,它基于ORM(Object-Relational Mapping,对象关系映射)原理,极大地简化了数据库操作,让开发者能够以面向对象的方式处理数据库数据,而无需编写繁琐的SQL语句。ActiveRecord不仅提高了开发效率,还增强了代码的可读性和可维护性。本章将深入解析Yii2中的ActiveRecord模型,从基本原理、定义方式、基本操作到高级应用,全方位带你领略其魅力。 #### 5.1.1 ActiveRecord基本概念 ActiveRecord是一种设计模式,最早由Rails框架引入,并迅速在多个PHP框架中流行开来。它遵循“活动记录”的原则,即数据库中的每一行都对应一个对象实例,这些对象封装了数据库行的数据,并提供了直接操作这些数据的方法。在Yii2中,ActiveRecord类(`\yii\db\ActiveRecord`)是所有ActiveRecord模型的基类,通过继承该类并定义与数据库表相对应的属性和方法,即可轻松实现数据的CRUD(创建、读取、更新、删除)操作。 #### 5.1.2 ActiveRecord的优势 1. **面向对象的数据访问**:ActiveRecord让数据库操作变得更加直观和方便,通过操作对象即可实现对数据库表中数据的访问和修改。 2. **减少SQL编写**:开发者无需直接编写SQL语句,除非在特殊情况下需要优化查询性能,这大大降低了SQL注入的风险,并提高了开发效率。 3. **数据验证与业务逻辑集成**:ActiveRecord支持在模型中定义数据验证规则和业务逻辑,使得数据验证和业务处理更加集中和方便。 4. **关系定义**:Yii2的ActiveRecord支持定义表之间的关联(如一对一、一对多、多对多),使得处理复杂的数据关系变得简单。 #### 5.1.3 定义ActiveRecord模型 在Yii2中定义一个ActiveRecord模型非常简单,通常遵循以下步骤: 1. **创建模型类**:在`models`目录下创建一个新的PHP类文件,该类继承自`\yii\db\ActiveRecord`。 2. **定义表名**:通过覆盖`tableName()`方法指定该模型对应的数据库表名。如果模型类名遵循一定的命名规范(如`User`对应`user`表),Yii2将自动推断表名,但明确指定表名是一个好习惯。 3. **定义属性**:虽然ActiveRecord会自动根据数据库表结构映射出对应的属性,但你也可以在模型中显式定义属性,特别是那些没有直接对应数据库字段的属性(如计算字段)。 4. **规则与验证**:通过覆盖`rules()`方法定义数据验证规则,确保数据在保存到数据库之前符合特定条件。 5. **场景(Scenarios)**:根据业务需求,可以通过覆盖`scenarios()`方法定义不同的数据验证场景。 6. **关系定义**:使用`getRelationName()`方法来定义模型之间的关系,其中`RelationName`是你自定义的关系名称,这个方法需要返回一个`yii\db\ActiveQuery`对象,用于描述关系的查询逻辑。 #### 5.1.4 ActiveRecord的基本操作 ActiveRecord提供了一系列方法来实现对数据库的基本操作,包括但不限于: - **查询数据**:使用`find()`系列方法(如`find()`, `findOne()`, `findBySql()`等)来检索数据。`find()`返回一个`ActiveQuery`对象,它支持链式调用以构建复杂的查询条件。 - **保存数据**:通过调用模型的`save()`方法,可以将模型的当前状态(即属性值)保存到数据库中。如果模型是新的(即尚未保存到数据库),则执行插入操作;如果模型已存在,则执行更新操作。 - **删除数据**:调用模型的`delete()`方法可以删除当前模型对应的数据库记录。 - **事务处理**:Yii2的ActiveRecord支持事务处理,通过`\Yii::$app->db->transaction()`可以开始一个事务,并在必要时进行回滚或提交,以确保数据的一致性。 #### 5.1.5 高级应用 除了基本的CRUD操作外,ActiveRecord还支持许多高级功能,如: - **批量插入与更新**:通过构建适当的`ActiveQuery`对象,可以实现数据的批量插入和更新。 - **复合主键**:虽然Yii2的ActiveRecord默认假设每个表都有一个自增主键,但你也可以通过覆盖`primaryKey()`方法来指定复合主键。 - **乐观锁**:为了处理并发更新的问题,Yii2的ActiveRecord支持乐观锁机制,通过在模型中添加一个版本字段(通常是整数类型),并在更新时检查该字段的值是否未变,来确保数据的一致性。 - **查询缓存**:利用Yii2的查询缓存功能,可以缓存复杂的查询结果,以提高应用性能。 #### 5.1.6 小结 Yii2的ActiveRecord模型是一个功能强大且灵活的工具,它使得数据库操作变得更加简单和直观。通过定义模型类、实现基本的数据操作方法以及利用高级特性,开发者可以高效地构建出稳定、可扩展且易于维护的应用。然而,值得注意的是,虽然ActiveRecord提高了开发效率,但在处理大量数据或执行复杂查询时,仍需谨慎使用,必要时应结合原生SQL查询以优化性能。 通过本章的学习,相信你已经对Yii2中的ActiveRecord模型有了深入的理解,并掌握了其基本用法和高级技巧。在后续的章节中,我们将继续探索Yii2的其他核心组件和高级功能,帮助你成为一名更加熟练的Yii2开发者。
上一篇:
4.4 项目实现迭代四:文章管理
下一篇:
5.2 通过CRUD(增查改删)操作理解ActiveRecord类
该分类下的相关小册推荐:
PHP8入门与项目实战(6)
Workerman高性能Web框架-Webman
Swoole入门教程
PHP程序员面试算法宝典
Laravel(10.x)从入门到精通(三)
Laravel(10.x)从入门到精通(十三)
Laravel(10.x)从入门到精通(十)
Magento2主题开发高级实战
Yii2框架从入门到精通(中)
Magento零基础到架构师(内容设计)
PHP8入门与项目实战(5)
Laravel(10.x)从入门到精通(十二)