yii2.0 增删改查sql语句

User::find()->all(); 此方法返回所有数据;
User::findOne($id); 此方法返回 主键 id=1 的一条数据(举个例子)User::find()->where(['name' => '小伙儿'])->one(); 此方法返回 ['name' => '小伙儿'] 的一条数据;where(['>', '字段名', '值'])查询比条件的
User::find()->where(['name' => '小伙儿'])->all(); 此方法返回 ['name' => '小伙儿'] 的所有数据;
User::find()->orderBy('id DESC')->all(); 此方法是排序查询;
if (!empty($search)) {
    $query->andWhere(['like', 'title', $search]);
}

生成的语句就是10) AND (title LIKE ‘%yii%’)
操作符格式:
[操作符作符, 操作数1, 操作数2, …]
第一个参数是操作符
操作符包括and、or、 like、in、 between等
第二个第三个都是操作数

第一种最简单的就是上面提到的例子
 andWhere(['like', 'title','yii']);
... WHERE  (`title` LIKE '%yii%')

$this->find()->where(['in', 'product_id', $ids])->count();  in用法

第二种
addWhere(['and', 'id=1', 'parent_id=1']);
... WHERE id=1 AND parent_id=1

第三种
addWhere(['and', 'type=1', ['or', 'id=1', 'parent_id=1']]);
... WHERE type=1 AND (id=1 OR parent_id=1);

第四种
->andWhere(['or like','name',['油条','spicy']]);
 WHERE `name` LIKE '%油条%' OR `name` LIKE '%spicy%';
 
 第五种
 addWhere(['or',['like','name','煎饼'],['like','title','spicy']]);//操作符格式的嵌套
... WHERE (`status`=1) AND ((`name` LIKE '%煎饼%') OR (`title` LIKE '%spicy%'))

不等于:
->andWhere(['<>','status', $date])

小于 :top_time小于 $time
$andWhere = ['<','top_time',$time];

优先按照指定字段字符串排序:
$orderSql = ["FIELD(city_id,$city_id) desc,level_id ASC" => true];

->orderBy(["FIELD(status, 101,106) desc" => true])


['between', 'id', 1, 10] //id BETWEEN 1 AND 10

优先按照指定字段字符串排序
在这里插入图片描述

查询操作:
User::find()->where(['name' => 'username'])->one();   此方法返回 ['name' => 'username'] 的一条数据;
User::find()->where(['name' => 'username'])->all();   此方法返回 ['name' => 'username'] 的所有数据;

User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id');   统计符合条件的总条数;
添加:

使用createCommand()进行新增数据:

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

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

$user= new User;         
$user->username =$username;  
$user->password =$password;  
$user->save()

批量插入数据:

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

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

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

直接修改:修改用户test的年龄为40:

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

使用createCommand()修改:
修改多条数据的某一字段 :

$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():执行(必要)

删除

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

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

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

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

使用createCommand()删除:

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

更详细的增删改差

分组,求和 ,以city_id为id

$today_active = CityDataStatistic:: getObjectByWhere($active_where,[
            "SUM(total) AS total",
            "SUM(false_total) AS false_total",
            "type", "city_id"])->groupBy(['city_id'])->indexBy('city_id')->asArray()->all();

根绝两个字段的和进行排序

$list = User::getByAndWhere($where,$andWhere,'id,login_name,nick_name,small_active,vir_small_active,user_face,(small_active+vir_small_active) as num','num DESC','',$size);

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值