Yii2 之数据库命令 createCommand 常用用法

这篇博客介绍了如何在Yii框架下使用createCommand方法来直接执行SQL查询和进行数据的插入、更新与删除操作。内容包括如何创建命令、执行SQL、写入数据并获取最新插入ID、更新数据以及删除数据的示例代码。此外,还展示了如何进行单表查询和连表查询的高级用法,如选择特定字段、设置条件、排序等。
摘要由CSDN通过智能技术生成

不同于 ActiveRecord 的使用,采用 createCommand 你可以使用相对原始的写法操作数据库,比如直接执行 SQL 查询、通过数组的方式将数据写入到数据等等

▪ 创建命令

Yii::app()->db->createCommand();  # 全局可用
parent::getDb()->createCommand();  # 仅可用于集成自 ActiveRecord 的类

Yii::app()->db->createCommand($sql);  # 带 $sql 的命令
parent::getDb()->createCommand($sql);  # 带 $sql 的命令 ActiveRecord

▪ 执行SQL

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

▪ 写入数据

# 写入数据
# 备注:写入、更新、删除时需要调用 execute() 进行执行
# 备注:'[表名]' 为字符格式
# 备注:'[数据]' 为数组格式,例如 array('name'=>'','insert_time'=>'')
Yii::app()->db->createCommand()->insert('[表名]', '[数据]')->execute();

# 获取最新写入ID
Yii::app()->db->getLastInsertID();

▪ 更新数据

# 更新数据
# 备注:写入、更新、删除时需要调用 execute() 进行执行
# 备注:'[表名]' 为字符格式
# 备注:'[数据]' 为数组格式,例如 array('name'=>'','insert_time'=>'')
Yii::app()->db->createCommand()->update('[表名]', [数据]', array('id'=>$id))->execute();
);

▪ 删除数据

# 删除数据
# 备注:写入、更新、删除时需要调用 execute() 进行执行
# 备注:'[表名]' 为字符格式
Yii::app()->db->createCommand()->delete('[表名]', array('id'=>$id))->execute();

六、select其他写法

单表查询

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

连表查询

$goods = Yii::app()->db->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();

// 首先要实例化一个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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值