Active Record提供了用于访问数据的面向对象的API。Active Record类与数据库表关联。
Yii为以下关系数据库提供Active Record支持-
- MySQL 4.1或更高版本
- SQLite 2和3:
- PostgreSQL 7.3或更高版本
- Microsoft SQL Server 2008或更高版本
- CUBRID 9.3或更高版本
- 甲骨文
- 弹性搜索
- 狮身人面像
此外,Active Record类支持以下NoSQL数据库-
- Redis 2.6.12或更高版本
- MongoDB 1.3.0或更高版本
在为一个单独的数据库表声明一个Active Record类(在本例中为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-转到http:// localhost:8080 / index.php?r = site / test-db,您将看到以下输出。

通过主键值或一组列值进行查询是一项常见的任务,因此Yii提供了以下方法-
- yii \ db \ ActiveRecord :: findOne() -返回单个Active Record实例
- yi \ 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-转到http:// localhost: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浏览器的地址栏中键入http:// localhost:8080 / index.php?r = site / test-db,您将看到以下输出。

步骤3-例如,您还可以调用yii \ db \ ActiveRecord :: deleteAll()方法来删除多行数据。
public function actionTestDb() {
MyUser::deleteAll('id >= 20');
}作者:terry,如若转载,请注明出处:https://www.web176.com/yii/410.html
支付宝
微信