Yii createCommand CURD操作

作者: siediyer 分类: PHP 发布时间: 2016-08-15 16:11

本文用作工作记录,也许有人会问为什么不用 Yii 的 Model 去操作 DB,原因很简单,Yii 的 Model 写法上是方便了很多,但是会执行多余的 SQL,打开 Yii 的执行 log 就会发现。所以为了效率,为了 DB 服务器的性能考虑,还是使用 createCommand 的好。

insert

$row = Yii::app()->getDb()->createCommand()->insert('goods', array(
            'good_name' => $goods_name,
            'good_type' => $goods_type,
            'price' => $price,
            'buy_nums' => 0,
            'commit_nums' => 0,
            'create_time' => time(),
        ));

select  单表查询

$goodsTypes = Yii::app()->getDb()->createCommand()
            ->select('type_id, type_name')
            ->from('goods_type')
            ->where('status=1')->queryAll();

连表查询

$goods = Yii::app()->getDb()->createCommand()->from('goods g')
        ->select('g.good_id, g.good_name, gt.type_name, g.price, g.buy_nums, g.commit_nums, g.create_time')
        ->join('goods_type gt', 'g.good_type=gt.type_id')
        ->where('g.`status`=1 and gt.`status`=1')
        ->order('g.create_time desc')
        ->queryAll();

delete

$row = Yii::app()->getDb()->createCommand()
        ->delete('goods', "good_id=:good_id", array(
            ':good_id' => $goods_id,
        ));

update

$row = Yii::app()->getDb()->createCommand()->update('goods', array(
    'good_name' => $goods_name,
    'good_type' => $goods_type,
    'price' => $price,
), "good_id='{$goods_id}'");

建立多个查询

一个 CDbCommand 实例可以重复使用多次建立几个查询。建立一个新的查询之前,需要调用 CDbCommand::reset() 方法以清理前面的查询。例子:

$command = Yii::app()->db->createCommand();
$users = $command->select('*')->from('tbl_users')->queryAll();
$command->reset(); // clean up the previous query
$posts = $command->select('*')->from('tbl_posts')->queryAll();

 

Yii::app()->db->createCommand($sql)->queryAll(); //查询所有行数据
​Yii::app()->db->createCommand($sql)->queryRow(); //查询第一行数据
​Yii::app()->db->createCommand($sql)->queryColumn(); //查询第一列数据​
​Yii::app()->db->createCommand($sql)->queryScalar(); //查询第一行的第一字段

 

// 首先要实例化一个CDbCommand对象
$command = Yii::app()->db->createCommand(); // 注意参数留空了。。
// 可用的方法列表如下:
->select(): SELECT子句
->selectDistinct(): SELECT子句,并保持了记录的唯一性
->from(): 构建FROM子句
->where(): 构建WHERE子句
->join(): 在FROM子句中构建INNER JOIN 子句
->leftJoin(): 在FROM子句中构建左连接子句
->rightJoin(): 在FROM子句中构建右连接子句
->crossJoin(): 添加交叉查询片段(没用过)
->naturalJoin(): 添加一个自然连接子片段
->group(): GROUP BY子句
->having(): 类似于WHERE的子句,但要与GROUP BY连用
->order(): ORDER BY子句
->limit(): LIMIT子句的第一部分
->offset(): LIMIT子句的第二部分
->union(): appends a UNION query fragment

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

Title - Artist
0:00