- Yii 教程
- Yii - 首页
- Yii - 概述
- Yii - 安装
- Yii - 创建页面
- Yii - 应用结构
- Yii - 入口脚本
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用动作
- Yii - 模型
- Yii - 小部件
- Yii - 模块
- Yii - 视图
- Yii - 布局
- Yii - 资源
- Yii - 资源转换
- Yii - 扩展
- Yii - 创建扩展
- Yii - HTTP 请求
- Yii - 响应
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 规则
- Yii - HTML 表单
- Yii - 验证
- Yii - 即席验证
- Yii - AJAX 验证
- Yii - 会话
- Yii - 使用闪存数据
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 文件上传
- Yii - 格式化
- Yii - 分页
- Yii - 排序
- Yii - 属性
- Yii - 数据提供者
- Yii - 数据小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 创建事件
- Yii - 行为
- Yii - 创建行为
- Yii - 配置
- Yii - 依赖注入
- Yii - 数据库访问
- Yii - 数据访问对象
- Yii - 查询构建器
- Yii - 活动记录 (Active Record)
- Yii - 数据库迁移
- Yii - 主题
- Yii - RESTful API
- Yii - RESTful API 实战
- Yii - 字段
- Yii - 测试
- Yii - 缓存
- Yii - 片段缓存
- Yii - 别名
- Yii - 日志
- Yii - 错误处理
- Yii - 身份验证
- Yii - 授权
- Yii - 本地化
- Yii - Gii
- Gii – 创建模型
- Gii – 生成控制器
- Gii – 生成模块
- Yii 有用资源
- Yii - 快速指南
- Yii - 有用资源
- Yii - 讨论
Yii - 活动记录 (Active Record)
活动记录提供了一个面向对象的 API 用于访问数据。一个活动记录类与一个数据库表相关联。
Yii 为以下关系数据库提供活动记录支持:
- MySQL 4.1 或更高版本
- SQLite 2 和 3
- PostgreSQL 7.3 或更高版本
- Microsoft SQL Server 2008 或更高版本
- CUBRID 9.3 或更高版本
- Oracle
- ElasticSearch
- Sphinx
此外,活动记录类还支持以下NoSQL 数据库:
- Redis 2.6.12 或更高版本
- MongoDB 1.3.0 或更高版本
为单独的数据库表声明活动记录类(在本例中为MyUser 模型)后,应按照以下步骤查询其中的数据:
- 使用 yii\db\ActiveRecord::find() 方法创建一个新的查询对象。
- 构建查询对象。
- 调用查询方法来检索数据。
步骤 1 - 修改actionTestDb() 方法如下。
public function actionTestDb() {
// return a single user whose ID is 1
// SELECT * FROM `user` WHERE `id` = 1
$user = MyUser::find()
->where(['id' => 1])
->one();
var_dump($user);
// return the number of users
// SELECT COUNT(*) FROM `user`
$users = MyUser::find()
->count();
var_dump($users);
// return all users and order them by their IDs
// SELECT * FROM `user` ORDER BY `id`
$users = MyUser::find()
->orderBy('id')
->all();
var_dump($users);
}
上面给出的代码展示了如何使用 ActiveQuery 查询数据。
步骤 2 - 访问https://:8080/index.php?r=site/test-db,您将看到以下输出。
按主键值或一组列值查询是一项常见任务,因此 Yii 提供了以下方法:
yii\db\ActiveRecord::findOne() - 返回单个活动记录实例
yii\db\ActiveRecord::findAll() - 返回活动记录实例数组
示例 -
public function actionTestDb() {
// returns a single customer whose ID is 1
// SELECT * FROM `user` WHERE `id` = 1
$user = MyUser::findOne(1);
var_dump($user);
// returns customers whose ID is 1,2,3, or 4
// SELECT * FROM `user` WHERE `id` IN (1,2,3,4)
$users = MyUser::findAll([1, 2, 3, 4]);
var_dump($users);
// returns a user whose ID is 5
// SELECT * FROM `user` WHERE `id` = 5
$user = MyUser::findOne([
'id' => 5
]);
var_dump($user);
}
保存数据到数据库
要将数据保存到数据库,应调用yii\db\ActiveRecord::save() 方法。
步骤 1 - 修改actionTestDb() 方法如下。
public function actionTestDb() {
// insert a new row of data
$user = new MyUser();
$user->name = 'MyCustomUser2';
$user->email = 'mycustomuser@gmail.com';
$user->save();
var_dump($user->attributes);
// update an existing row of data
$user = MyUser::findOne(['name' => 'MyCustomUser2']);
$user->email = 'newemail@gmail.com';
$user->save();
var_dump($user->attributes);
}
步骤 2 - 访问https://:8080/index.php?r=site/test-db,您将看到以下输出。
要删除单行数据,应:
检索活动记录实例
调用yii\db\ActiveRecord::delete() 方法
步骤 1 - 修改actionTestDb() 方法如下。
public function actionTestDb() {
$user = MyUser::findOne(2);
if($user->delete()) {
echo "deleted";
}
}
步骤 2 - 在 Web 浏览器的地址栏中输入https://:8080/index.php?r=site/test-db,您将看到以下输出。
步骤 3 - 您还可以调用yii\db\ActiveRecord::deleteAll() 方法删除多行数据,例如。
public function actionTestDb() {
MyUser::deleteAll('id >= 20');
}
广告