Yii框架中数据库访问与活动记录有何根本差异?
- 内容介绍
- 文章标签
- 相关推荐
Yii 框架中数据库访问与活动记录的根本差异
者常见痛点
- 不清楚何时使用原生 SQL,导致代码冗余或维护困难。
- 担心 SQL 注入等安全风险,却又想较快完成增删改查。
- 在复杂查询下性能不佳,却又不想手写大量繁琐的 SQL。
- 学习成本高的观点是。既要掌握底层 DB 组件,又要熟悉 Active Record 的用法。
一、数据库访问
主要特性
- 灵活性:可以直接编写原生 SQL,支持任何复杂查询、窗口函数、临时表等高级特性。
- 高效性:省去 ORM 的映射开销,在大批量插入、复杂联表或事务处理时表现更佳。
- 底层控制:需要手动处理数据转换、验证还有错误捕获,适合对性能和细节有严格要求的场景。
常见痛点及解决思路
痛点:手写 SQL 易出现拼写错误或遗漏参数,引发 SQL 注入风险;代码可读性差,后期维护成本高。
解决:
-
始终使用参数绑定(
:param) 而非字符串拼接。 - 将重复的查询封装为自定义方法或查询建立器类,提高可读性。
-
配合事务(
\Yii::$app->db->beginTransaction) 处理批量操作,确保数据一致性。
二、活动记录
活动记录是 Yii 实现的 ORM 技术,所有模型类均继承自 \yii\db\ActiveRecord。
Yii 框架中数据库访问与活动记录的根本差异
者常见痛点
- 不清楚何时使用原生 SQL,导致代码冗余或维护困难。
- 担心 SQL 注入等安全风险,却又想较快完成增删改查。
- 在复杂查询下性能不佳,却又不想手写大量繁琐的 SQL。
- 学习成本高的观点是。既要掌握底层 DB 组件,又要熟悉 Active Record 的用法。
一、数据库访问
主要特性
- 灵活性:可以直接编写原生 SQL,支持任何复杂查询、窗口函数、临时表等高级特性。
- 高效性:省去 ORM 的映射开销,在大批量插入、复杂联表或事务处理时表现更佳。
- 底层控制:需要手动处理数据转换、验证还有错误捕获,适合对性能和细节有严格要求的场景。
常见痛点及解决思路
痛点:手写 SQL 易出现拼写错误或遗漏参数,引发 SQL 注入风险;代码可读性差,后期维护成本高。
解决:
-
始终使用参数绑定(
:param) 而非字符串拼接。 - 将重复的查询封装为自定义方法或查询建立器类,提高可读性。
-
配合事务(
\Yii::$app->db->beginTransaction) 处理批量操作,确保数据一致性。
二、活动记录
活动记录是 Yii 实现的 ORM 技术,所有模型类均继承自 \yii\db\ActiveRecord。

