yii1.1查询构建器使用方法

本文详细介绍了Yii1.1框架中的查询构建器使用,包括如何使用自定义SQL、选择方法、条件筛选、排序、分页、联接查询、分组和HAVING子句、UNION操作,以及数据的插入、更新和删除操作。
摘要由CSDN通过智能技术生成

本文发布于 https://www.xstnet.com/article-112.html

使用Query Builder

关于Query Builder

查询构建器调用的方法CDbConnection::createCommand(), 可以先通过以下代码得到:

/**
 * @var $db CDbConnection
 */
$db = Yii::app()->db;

/**
 * @var $command CDbCommand
 */
$command = $db->createCommand();

查询构建器的获取结果有以下几种方法

  • query: 返回一个CDbDataReader对象, 需要自己去获取结果
  • queryAll: 返回一个包含所有结果的二维数组, 如果没有查询到数据,返回一个空数组
  • queryRow: 返回一个包含所有结果的一维数组, 如果没有查询到数据,返回false
  • queryScalar 返回第一行第一列的值, 如果没有查询到数据, 返回false
  • queryScalar 返回包含第一列的一维数组。如果没有查询到数据,则为空数组。
  • execute 执行语句, 无结果,返回受影响的行数
使用自定义的sql
// 方法1
$result = Yii::app()->db->createCommand('select * from tbl_user')->queryAll();
// 方法2, 使用参数绑定
$command->text = 'select * from tbl_user where id = :id';
$result = $command->queryAll(true, [':id' => 5]);
// 方法3
$result = $command->setText('select * from tbl_user')->queryAll();
使用构建器
使用select()方法
echo $command->select('id, name')->getText();
// SELECT `id`, `name`

echo $command->select("id, name, FROM_UNIXTIME(created_at, '%Y-%m-%d') as create_time")->getText(); // 使用mysql表达式
// SELECT id, name, FROM_UNIXTIME(created_at, '%Y-%m-%d') as create_time

// 使用数组
echo $command->select(['id, name'])->getText();
// SELECT `id`, `name`

echo $command->select(['id', 'name username', 'count(*) as count'])->getText();
// SELECT `id`, `name` AS `username`, count(*) as count
// 此处使用数组时, 如果元素包含`()`括号, 则不会被转义, 如果不包含括号, 但是包含空格, 会被`as`替换
使用selectDistinct()方法
echo $command->selectDistinct(['id', 'name'])->getText();
// SELECT DISTINCT `id`, `name`

echo $command->selectDistinct('id, name, now() now_time')->getText();
SELECT DISTINCT id, name, now() now_time
使用from()方法
echo $command->from('tbl_user')->getText();
// SELECT * FROM `tbl_user`

echo $command->from('{
   {user}}')->getText(); // 使用表前缀, 需要先配置`db.tablePrefix`
// SELECT * FROM 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值