温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用YII2框架如何对数据库进行操作

发布时间:2021-04-13 15:47:15 来源:亿速云 阅读:210 作者:Leah 栏目:开发技术

这篇文章将为大家详细讲解有关使用YII2框架如何对数据库进行操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

一、以createCommand方式:

// YII2中通过createCommand来处理数据库   // 查询多条记录 // {{%user}} 表示如果设置了表前缀,YII会自动帮你替换 $data1 = YII::$app->db->createCommand('select * from {{%user}}')->queryAll();     // 查询一条记录 // createCommand的第二个参数可以进行参数绑定 $data2 = YII::$app->db->createCommand('select * from {{%user}} where id=:id', ['id' => 2])->queryOne();     // 返回一列(第一列)数据 $data3 = YII::$app->db->createCommand('select name from {{%user}}')->queryColumn();     // 返回一个标量值,常用于统计 $data4 = YII::$app->db->createCommand('select count(*) as cnt from {{%user}}')->queryScalar();   // 绑定参数,防止SQL注入问题 // bindValue绑定一个参数 $data5 = YII::$app->db->createCommand('select * from {{%user}} where id=:id')   ->bindValue(':id', 3)   ->queryOne();   // 绑定多个参数 $data6 = YII::$app->db->createCommand('select * from {{%user}} where id=:id and name=:name')   ->bindValues([':id' => 5, ':name' => 'eee'])   ->queryOne();   // 绑定参数引用 $id = 7; $data7 = YII::$app->db->createCommand('select * from {{%user}} where id=:id')   ->bindParam(':id', $id)   ->queryOne();   // 执行非查询语句 $data8 = YII::$app->db->createCommand('update {{%user}} set name=:name where id=:id')   ->bindValues([':name' => 'abcdef', ':id' => 8])   ->execute();   // 当然,我们也可以用更加简便的方法 // insert()插入 $data9 = YII::$app->db->createCommand()->insert('{{%user}}', [   'name' => 'test',   'sex' => 1,   'age' => 28, ])->execute();   // batchInsert()批量插入 $data10 = YII::$app->db->createCommand()->batchInsert('{{%user}}', ['name', 'sex', 'age'], [   ['111', 1, 11],   ['222', 1, 22], ])->execute();   // update()更新 $data11 = YII::$app->db->createCommand()->update('{{%user}}', [   'name' => '1242143214' ], 'id=:id', ['id' => 10])->execute();   // delete()删除 $data12 = YII::$app->db->createCommand()->delete('{{%user}}', 'id=:id', ['id' => 11])->execute();     // 执行事务 $trans = YII::$app->db->beginTransaction();   try {   YII::$app->db->createCommand()->update('{{%user}}', ['age' => 12], 'id=:id', ['id' => 13])->execute();   YII::$app->db->createCommand()->update('{{%user}}', ['age' => 22], 'id=:id', ['id' => 14])->execute();     $trans->commit(); } catch (\Exception $e) {   //如果语句中有一个执行失败,那么就将回滚   $trans->rollBack();   throw $e; }   // 获取表的定义信息 $info = YII::$app->db->getTableSchema('{{%user}}');

二、以AR(Active Record)方式操作数据库

我们需要创建一个继承自\yii\db\ActiveRecord的模型,然后重写tableName()函数,返回要操作的表名。

<?php namespace app\models;   use yii\db\ActiveRecord;   class MyUser extends ActiveRecord {   public static function tableName()   {     return '{{%user}}';   } }

常用操作如下:

// 查询一条记录 // asArray的作用是以数组形式返回结果 // find()会返回一个ActiveQuery对象,ActiveQuery对象继承自yii\db\Query,所以可以使用Query中的所有查询方法 $data1 = MyUser::find()->where(['id' => 1])->asArray()->one();   // 查询多条记录 $data2 = MyUser::find()->where([])->orderBy('id desc')->asArray()->all();   // 根据主键获取一条记录 $data3 = MyUser::findOne(3);   // 根据主键获取多条记录 $data4 = MyUser::findAll([4, 5, 6, 7]);   // 带条件查询多条记录 $data5 = MyUser::findAll(['sex' => 1]);   // 运行原生SQL $data6 = MyUser::findBySql('select * from {{%user}} where id=:id', [':id' => 8])->asArray()->one();   // 添加数据 // 准备一个新的实例,然后设置对应字段属性,保存 $user = new MyUser(); $user->name = 'test'; $user->sex = 1; $user->age = 22; $user->save();   // 修改数据 // 先获取一个对象,然后设置对应字段属性,保存 $upd = MyUser::findOne(10); $upd->name = 'abcdefg'; $upd->save();   // 修改多条数据 $data7 = MyUser::updateAll(['name' => 'update'], ['sex' => 1]);   // 删除一条数据 $del = MyUser::findOne(15); $del->delete();   // 删除多条数据 $data8 = MyUser::deleteAll(['sex' => 0]);   // 事务操作 $user2 = MyUser::findOne(22); $user3 = MyUser::findOne(33); $trans = MyUser::getDb()->beginTransaction(); try {   $user2->name = '2222';   $user3->name = '3333';   //修改数据   $user2->save();   $user3->save();     $trans->commit(); } catch (\Exception $e) {   $trans->rollBack();   throw $e; }

关于使用YII2框架如何对数据库进行操作就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI