首页
技术小册
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 通过CRUD(增查改删)操作理解ActiveRecord类 在Yii2框架中,ActiveRecord是一种非常强大的设计模式,它基于对象关系映射(ORM)原则,使得数据库表的行可以表示为PHP对象。通过ActiveRecord,开发者可以更加直观、面向对象的方式来操作数据库,极大地简化了数据访问层的开发工作。在本章节中,我们将通过实现CRUD(Create、Read、Update、Delete)操作来深入理解Yii2中的ActiveRecord类。 #### 5.2.1 引入ActiveRecord 在Yii2中,每个ActiveRecord类都继承自`\yii\db\ActiveRecord`,并且通常对应于数据库中的一个表。ActiveRecord类通过命名约定来识别其对应的数据库表,通常是将类名转换为复数形式(如果类名已经是复数则保持不变),并将首字母小写,以此作为表名。例如,`User`类通常对应于`user`表。 首先,我们需要定义一个ActiveRecord类。假设我们有一个`Post`表,包含`id`(主键)、`title`(标题)、`content`(内容)和`status`(状态)等字段,我们可以这样定义`Post`类: ```php namespace app\models; use Yii; use yii\db\ActiveRecord; class Post extends ActiveRecord { /** * 返回表名 * * @return string */ public static function tableName() { return 'post'; } // 可以在这里定义其他方法,如rules()、attributeLabels()等 } ``` #### 5.2.2 创建记录(Create) 在Yii2中,使用ActiveRecord创建新记录非常简单。我们只需要创建一个`Post`类的实例,设置其属性,然后调用`save()`方法即可。 ```php $post = new Post(); $post->title = 'Yii2框架介绍'; $post->content = 'Yii2是一个高效、安全、可扩展的PHP框架...'; $post->status = 1; // 假设1表示发布状态 if ($post->save()) { echo "Post created successfully!"; } else { echo "Failed to create post: " . print_r($post->getErrors(), true); } ``` `save()`方法会执行插入操作,并返回布尔值表示操作是否成功。如果失败,可以通过`getErrors()`方法获取错误信息。 #### 5.2.3 读取记录(Read) 读取记录同样简单。Yii2提供了多种方式来查询数据库记录。以下是一些常见的例子: - **通过主键查询**: ```php $post = Post::findOne($id); // $id为要查询的记录的ID if ($post) { echo $post->title; } ``` - **条件查询**: ```php $posts = Post::find()->where(['status' => 1])->all(); foreach ($posts as $post) { echo $post->title . "<br>"; } ``` - **使用`andWhere`、`orWhere`进行更复杂的查询**: ```php $posts = Post::find()->where(['status' => 1])->andWhere(['like', 'title', 'Yii2'])->all(); ``` #### 5.2.4 更新记录(Update) 更新记录与创建记录类似,但首先需要通过某种方式获取到要更新的记录实例,然后修改其属性,最后调用`save()`方法。 ```php $post = Post::findOne($id); if ($post) { $post->title = 'Yii2框架深度解析'; if ($post->save()) { echo "Post updated successfully!"; } else { echo "Failed to update post: " . print_r($post->getErrors(), true); } } ``` #### 5.2.5 删除记录(Delete) 删除记录也很直接,获取到要删除的记录实例后,调用其`delete()`方法即可。 ```php $post = Post::findOne($id); if ($post) { if ($post->delete()) { echo "Post deleted successfully!"; } else { echo "Failed to delete post."; } } ``` #### 5.2.6 深入理解ActiveRecord ##### 5.2.6.1 生命周期回调 ActiveRecord支持生命周期回调方法,如`beforeSave()`、`afterSave()`、`beforeDelete()`、`afterDelete()`等,这些方法可以在记录保存前后或删除前后自动执行,允许你在这些关键时刻插入自定义逻辑。 ##### 5.2.6.2 事务 Yii2支持数据库事务,这对于需要确保多个数据库操作要么全部成功要么全部失败的场景非常有用。你可以使用`Yii::$app->db->beginTransaction()`开始一个事务,然后执行多个数据库操作,最后使用`commit()`提交事务或`rollBack()`回滚事务。 ##### 5.2.6.3 关联关系 ActiveRecord还支持定义和查询数据表之间的关联关系,如一对一、一对多、多对多等。通过定义关联,你可以很方便地查询和操作相关联的数据。 #### 5.2.7 最佳实践与注意事项 - **验证数据**:在保存记录之前,总是应该验证数据的有效性。Yii2提供了强大的验证器系统,可以在ActiveRecord类中定义验证规则。 - **使用事务**:当多个数据库操作需要作为一个整体执行时,使用事务可以确保数据的一致性和完整性。 - **性能考虑**:在使用ActiveRecord进行大量数据操作时,要注意性能问题。虽然ActiveRecord很方便,但在某些情况下,直接使用SQL查询或查询构建器可能会更高效。 - **安全性**:当处理用户输入时,始终要小心SQL注入等安全问题。Yii2的ActiveRecord和查询构建器都使用了参数化查询来防止这类问题,但开发者仍需谨慎。 通过本章的学习,你应该已经对Yii2中的ActiveRecord类有了深入的理解,并掌握了如何使用它来执行CRUD操作。ActiveRecord是Yii2框架中一个非常强大的特性,掌握它对于开发高效、安全的Web应用至关重要。
上一篇:
5.1 ActiveRecord模型概述
下一篇:
5.2.1 文章表(ds_article)
该分类下的相关小册推荐:
Laravel(10.x)从入门到精通(十八)
Magento零基础到架构师(安装篇)
Yii2框架从入门到精通(下)
Laravel(10.x)从入门到精通(十五)
PHP8入门与项目实战(5)
PHP面试指南
PHP程序员面试笔试真题与解析
Laravel(10.x)从入门到精通(六)
PHP8实战小册
Shopify应用实战开发
Laravel(10.x)从入门到精通(七)
Workerman高性能框架-GatewayWorker