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


    一、新增

    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();
  • 相关阅读:
    jquery总结
    Reporting Services子报表
    Reporting Services分组及Toggle
    Reporting Services报表钻取
    Reporting Services环境
    两种很有用的组件
    Reporting Services正确显示页码
    Reporting Services发布
    Java面试题
    BigInteger引申的一个访问权限控制解决方案
  • 原文地址:https://www.cnblogs.com/woods1815/p/11145063.html
Copyright © 2020-2023  润新知