Yii 2.0 操作数据的各种办法

Yii 2.0 数据库操作

第一种,使用的是use yii\db\Query;

use yii\db\Query;

$query = new Query();
query->select('*')->from('finance')->where("status = '有效' AND creator=".$uid);
$query->andWhere("is_delete='否'");
$model = $query->offset($pages->offset)->limit($pages->limit)->all();

这种出来的就直接是数组,比较容易处理,但是这种方法的话,需要指定from的数据库,一般有分页可以用这种,好像下面这样使用

$query  = new Query();
$query->select('*')->from('xxx');
if (empty($sort)) {
	$orderBy = 'id DESC';
} else {
	$orderBy = $sort.' '.$order;
}
$query->orderBy($orderBy);
//总数
$count = $query->count();
//显示的数据
$list = $query->offset($offset)->limit($limit)->all();

而且可以用来做子查询

$subQuery = (new Query())->select('COUNT(*)')->from('customer');

// SELECT `id`, (SELECT COUNT(*) FROM `customer`) AS `count` FROM `customer`
$query = (new Query())->select(['id', 'count' => $subQuery])->from('customer');

关联表

$query->select('brand.*,company.chinese_name as company_chinese_name,company.foreign_name as company_foreign_name')->from('brand')->where("brand.status!='-1'")->join('LEFT JOIN','company','brand.company_id=company.id');

第二种,基础yii\db\ActiveRecord都可以用,我们的model一般都是需要基础它的

User::find()->all();    此方法返回所有数据;
User::findOne($id);  此方法返回 主键 id=1  的一条数据(举个例子);
User::find()->where(['name' => '小伙儿'])->one();  此方法返回 ['name' => '小伙儿'] 的一条数据;
User::find()->where(['name' => '小伙儿'])->all();  此方法返回 ['name' => '小伙儿'] 的所有数据;
User::find()->orderBy('id DESC')->all();  此方法是排序查询;
User::findBySql('SELECT * FROM user')->all();  此方法是用 sql  语句查询 user 表里面的所有数据;
User::findBySql('SELECT * FROM user')->one();  此方法是用 sql  语句查询 user 表里面的一条数据;
User::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id');  统计符合条件的总条数;
User::find()->one();    此方法返回一条数据;
User::find()->all();    此方法返回所有数据;
User::find()->count();    此方法返回记录的数量;
User::find()->average();    此方法返回指定列的平均值;
User::find()->min();    此方法返回指定列的最小值 ;
User::find()->max();    此方法返回指定列的最大值 ;
User::find()->scalar();    此方法返回值的第一行第一列的查询结果;
User::find()->column();    此方法返回查询结果中的第一列的值;
User::find()->exists();    此方法返回一个值指示是否包含查询结果的数据行;
User::find()->batch(10);  每次取 10 条数据
User::find()->each(10);  每次取 10 条数据, 迭代查询

上面都是静态的,我们也可以这样

$model = new User();
$query = User->find()->select('*')->where("status='1'");
$query->andWhere(['id'=>'1']);
$query->all()

但是这样出来的数据是对象,我们如果需要用数组,可以用AsArray()

$model = User::find()->>AsArray()->One();

而且我们新增数据和更新数据也是用这种

//新增
$model = new User()
//修改
$model = User::findOne(id);
//都可以用save
$model->save();

还有删除
// delete customer-10
Customer::findOne(10)->delete();

// the above code is equivalent to:
Customer::deleteAll(['status' => 1], 'id = :id',[':id'=>10]);

最后还有一直算是手动写sql的

//查询
$customers = Yii::$app->db->createCommand('SELECT * FROM customer')->queryAll();
上面出来的是一个数组

//修改数据,修改admin_role表,id=10的数据,改statut=1
// update admin_role set status=1 where id = 10;
Yii::$app->db->createCommand()->update('admin_role',['status'=>1],'id=10')->execute();

//当然免不了delete 
//delete from admin_role where id = 10
Yii::$app->db->createCommand()->delete('admin_role','id=10')->execute();

最后贴个官方文档

activerecord queryinterface query

转载于:https://my.oschina.net/gcdong/blog/1120367

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值