Yii2的增删改查操作示例

本文详细介绍Yii2框架下如何实现数据的增删改查操作,包括使用model和createCommand方法进行数据的新增、修改、删除和查询,同时提供批量操作和公共方法的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

yii2 增删改查 [ 2.0 版本 ]

新增

使用model::save()操作进行新增数据

//第一种
$user= new User;         
$user->username =$username;  
$user->password =$password;  
$user->save()
//第二种 写一个公共方法,传入数组,数组中每一个字段的名称与数据库中字段一致
public static function addUser($params)
    {
        try {
       		//常用的字段可以直接写到公用函数中,而不用每次都单独传值
            $params['create_time'] = date("Y-m-d H:i:s");
            //查询一下这个用户是否存在
            $user_where=" user_name=".$params['user_name'];
         	$user_ay=User::find()->select('id')->where($user_where)->asArray()->one();
            if($user_ay['id']>0){
                $user_id=$user_ay['id'];
            }else{
                $model = new User();
                if (!$model->load($params, '')) {
                    $user_id = 0;
                }
                if (!$model->validate()) {
                    $user_id = 0;
                }
                if ($model->save()) {
                	//得到保存的用户id
                    $user_id = $model->primaryKey;
                }
            }
        } catch (Exception $e) {
            $user_id=0;
        }
        return $user_id;
    }

使用createCommand()进行新增数据

Yii::$app->db->createCommand()->insert('user', [  
    'name' => 'test',  
    'age' => 30,  
])->execute();

批量插入数据

Yii::$app->db->createCommand()->batchInsert('user', ['name', 'age'], [  
    ['test01', 30],  
    ['test02', 20],  
    ['test03', 25],  
])->execute();

修改

使用model::save()进行修改

$user = User::find()->where(['name'=>'xiaoming'])->one(); //获取name等于test的模型
$user->age = 40; //修改age属性值
$user->save();   //保存

直接修改:修改用户test的年龄为40,将所有用户名称为xiaoming的年龄都改为40

$result = User::model()->updateAll(['age'=>40],['name'=>'xiaoming']);

使用createCommand()修改

Yii::$app->db->createCommand()->update('user', ['age' => 40], 'name = test')->execute();

多个where条件,批量修改某一个字段的值

$sum = Yii::$app->db->createCommand()->update('me_user_amount_trade', ['identification' => 2], ['in_userid'=>$userid,'status'=>3,'identification'=>1])->execute();

me_user_amount_trade :表名(table需要表前缀)
[‘identification’ => 2]:需要修改的字段和字段值
[‘in_userid’=>$userid,‘status’=>3,‘identification’=>1]:修改数据的条件(也就是得到你需要修改的数据)。
execute():执行(必要)

写一个公共方法,修改用户信息

public static function saveEditUserInfo($params)
    {
        try {
            $model = new User();
            $model = $model::findOne($params['id']);
            if(!$model){
                throw new Exception('查无此用户!');
            }
            unset($params['id']);
            if (!$model->load($params, '')) {
                throw new Exception('数据读取失败!');
            }
            if (!$model->validate()) {
                throw new Exception('数据验证失败!');
            }
            if (!$model->save()) {
                throw new Exception('数据保存失败!');
            }
        } catch (Exception $e) {
            self::$result['status'] = 1;
            self::$result['msg'] = $e->getMessage();
        }
        return self::$result;
    }

删除

使用model::delete()进行删除 单个删除

$user = User::find()->where(['name'=>'test'])->one(); 
$user->delete();

直接删除:删除年龄为30的所有用户

$result = User::deleteAll(['age'=>'30']);

根据主键删除:删除主键值为1的用户

$result = User::deleteByPk(1);

使用createCommand()删除

Yii::$app->db->createCommand()->delete('user', 'age = 30')->execute();

查询

查询单条记录

    public static function getuserinfo($user_name){
        $user_where=" user_name=".$user_name;
        $user_info=User::find()->select('*')->where($user_where)->asArray()->one();
        return $user_info;
    }

查询多条数据

 public static function getuserlist($user_name){
        $user_where=" user_name=".$user_name;
        $user_info=User::find()->select('*')->where($user_where)->asArray()->all();
        return $user_info;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值