加入收藏 | 设为首页 | 会员中心 | 我要投稿 无锡站长网 (https://www.0510zz.cn/)- 运维、开发、CDN、操作系统、语音技术!
当前位置: 首页 > 教程 > 正文

Yii2 中常用的增删改查操作总结

发布时间:2022-08-02 14:34:07 所属栏目:教程 来源:互联网
导读:一、新增 1、使用save() $model = new User(); $model-name = test; $model-phone = 13000000000; $model-email = 123456@qq.com; $model-save(); 2、使用createCommand 原生sql $sql = insert into user (name, phone, email) values (test, 13000000000, 1
  一、新增
  1、使用save()
 
  $model = new User();
  $model->name = 'test';
  $model->phone = '13000000000';
  $model->email = '123456@qq.com';
  $model->save();
  2、使用createCommand 原生sql
 
  $sql = "insert into user (name, phone, email) values ('test', '13000000000', '123456@qq.com')";
  Yii::$app->db->createCommand($sql)->execute();
  3、使用createCommand insert
 
  Yii::$app->db->createCommand()->insert('user', [
      'name' => 'test',
      'phone' => '13000000000',
      'email' => '123456@qq.com'
  ])->execute();
  4、批量插入
 
  Yii::$app->db->createCommand()->batchInsert('user', ['name', 'phone', 'email'], [
      ['test1', '13000000000', '123456@qq.com'],
      ['test2', '13000000001', '234567@qq.com']
  ])->execute();
   5、使用save()并校验参数正确性
 
  复制代码
          $data = [
              'name' => 'test',
              'phone' => '13000000000',
              'email' => '123456@qq.com'
          ];
          $model = new User();
          // 将数据填充到模型的属性中
          $model->load($data, '');
          // 等效于下面这样:
          // $model->attributes = $data;
          // 或者
          // $model->setAttributes($data);
          if ($model->validate()) {
              // 通过验证
              $model->save();
          } else {
              // 验证失败: $errors 是一个包含错误信息的数组
              $errors = $model->errors;
          }
  复制代码
   
 
  二、删除
  1、使用delete()
 
  $user = User::find()->where(['name' => 'test'])->one();
  $user->delete();
  2、使用deleteAll()批量删除
 
  User::deleteAll(['name' => 'test']);
  3、使用createCommand delete()
 
  Yii::$app->db->createCommand()->delete('user', ['name' => 'test'])->execute();
  4、使用createCommand 原生sql
 
  $sql = "delete from user where name = 'test'";
  Yii::$app->db->createCommand($sql)->execute();
   
 
  三、更新
  1、使用update()
 
  $user = User::find()->where(['name' => 'test'])->one();
  $user->phone = '13100000000';
  $user->update();  // 或者 $user->save();
  2、使用updateAll()
 
  User::updateAll(['phone' => '13100000000'], ['name' => 'test']);
  3、使用createCommand update()
 
  Yii::$app->db->createCommand()->update('user', ['phone' => '13100000000'], ['name' => 'test'])->execute();
  4、使用createCommand 原生sql
 
  $sql = "update user set phone = '13100000000' where name = 'test'";
  Yii::$app->db->createCommand($sql)->execute();
   
 
  四、查询
  1、使用model
 
  复制代码
  // 查询一条记录
  User::find()->select(['name', 'phone', 'email'])->where(['phone' => '13000000000'])->andWhere(['like', 'name', 'test'])->one();
  // 查询一条记录数组返回
  User::find()->where(['name' => 'test'])->asArray()->one();
  // 查询所有记录
  User::find()->where(['name' => 'test'])->all();
  // 查询所有记录数组返回
  User::find()->where(['name' => 'test'])->asArray()->all();
  复制代码
  2、使用createCommand
 
  // 查询一条记录
  Yii::$app->db->createCommand("select * from user where name = :name and phone = :phone")->bindValues([':name' => 'test', ':phone' => '13000000000'])->queryOne();
  // 查询所有记录
  Yii::$app->db->createCommand("select * from user where name = :name and phone = :phone")->bindValues([':name' => 'test', ':phone' => '13000000000'])->queryAll();
  3、使用yiidbQuery()
 
  (new yiidbQuery())->from('user')->where(['name' => 'test'])->all();
  4、子查询
 
  $subQuery = (new yiidbQuery())->select(['id'])->from('user')->where(['like', 'name', 'test'])->all();
  (new yiidbQuery())->from('user')->where(['in', 'id', $subQuery])->all();

(编辑:无锡站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读