• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    YII2框架中操作数据库的方式实例分析

    本文实例讲述了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;
    }
    
    

    具体更多的操作方式建议查看官方文档。

    更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • yii2.0数据库迁移教程【多个数据库同时同步数据】
    • Yii2.0高级框架数据库增删改查的一些操作
    • Yii2框架数据库简单的增删改查语法小结
    • Yii2——使用数据库操作汇总(增删查改、事务)
    • YII2数据库查询实践
    • Yii2数据库操作常用方法小结
    • Yii2实现跨mysql数据库关联查询排序功能代码
    • Yii2框架实现数据库常用操作总结
    • 使用Yii2实现主从数据库设置
    • yii2 数据库读写分离配置示例
    • 详解yii2使用多个数据库的案例
    • Yii2框架操作数据库的方法分析【以mysql为例】
    • yii2.0框架数据库操作简单示例【添加,修改,删除,查询,打印等】
    上一篇:YII2框架自定义全局函数的实现方法小结
    下一篇:YII2框架实现表单中上传单个文件的方法示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    YII2框架中操作数据库的方式实例分析 YII2,框架,中,操作,数据库,