让ar执行queryall和queryrow方法返回数组
让ar执行queryall和queryrow方法返回数组
<?php
namespace common\components;
use \CActiveRecord;
use \Yii;
use \CDbConnection;
use \CDbException;
use common\helpers\ConnectionHelper;
class DBActiveRecord extends CActiveRecord{
public static $_dbConnections = array();
/**
* @return 数据配置组
*/
public static function dbActiveGroup()
{
return get_called_class();
}
public static function model($className=__CLASS__)
{
if ($className === __CLASS__ )
{
$className = get_called_class();
}
return parent::model($className);
}
/**
* 重写了 CActiveRecord的获取数据库连接,默认从公共配置里面读取连接配置
*
* @return CDbConnection the database connection used by active record.
*/
function getDbConnection()
{
$activeGroup = $this->dbActiveGroup();
if(isset(self::$_dbConnections[$activeGroup]))
{
return self::$_dbConnections[$activeGroup];
}
else
{
$dbConnection = ConnectionHelper::get($activeGroup);
if( ! empty($dbConnection) && $dbConnection instanceof CDbConnection)
{
self::$_dbConnections[$activeGroup] = $dbConnection;
return $dbConnection;
}
else
{
throw new CDbException(Yii::t('yii','Active Record requires a "'.$activeGroup.'" CDbConnection application component.'));
}
}
}
/**
* 获取数据库连接,静态方法
*
* @return 数据连接
*/
public static function getDb()
{
$className = get_called_class();
return ConnectionHelper::get($className::dbActiveGroup());
}
/**
* 执行数据库function
*
* @return 执行结果
*/
public static function callFunction($mysqlFunction, array $params=array())
{
$className = get_called_class();
$connection = $className::getDb();
switch ($connection->driverName)
{
case 'mysql':
return ConnectionHelper::callMysqlFunction($connection, $mysqlFunction, $params);
break;
default:
break;
}
return FALSE;
}
/**
* 执行存储过程
*
* @return 执行结果
*/
public static function callProcedure($mysqlProcedure, array $params=array())
{
$className = get_called_class();
$connection = $className::getDb();
switch ($connection->driverName)
{
case 'mysql':
return ConnectionHelper::callMysqlProcedure($className::getDb(), $mysqlProcedure, $params);
break;
default:
break;
}
return FALSE;
}
/**
* 获取字段rawName加表别名前缀,主要联表时候防止where条件中字段冲突用的
* @param string $columnName
* @return string
*/
public function getColumnRawName($columnName)
{
$prefix = $this->getTableAlias(true) . '.';
$columns = $this->tableSchema->columns;
if (isset($columns[$columnName]))
{
return $prefix.$columns[$columnName]->rawName;
}
else
{
return $columnName;
}
}
/**
*
* @param mixed $criteria
*/
public function queryAll($criteria = NULL)
{
if ( ! empty($criteria))
{
$this->getDbCriteria()->mergeWith($criteria);
}
$result = $this->getCommandBuilder()
->createFindCommand($this->tableSchema, $this->getDbCriteria())
->queryAll();
$this->setDbCriteria(NULL);
return $result;
}
public function queryRow($criteria = NULL)
{
if ($criteria != NULL)
{
$this->getDbCriteria()->mergeWith($criteria);
}
$result = $this->getCommandBuilder()
->createFindCommand($this->tableSchema, $this->getDbCriteria())
->queryRow();
$this->setDbCriteria(NULL);
return $result;
}
public function compare($column, $value, $partialMatch = FALSE, $operator = 'AND')
{
$criteria = new \CDbCriteria;
$column = $this->getColumnRawName($column);
if ($value === array())
{
$criteria->condition = "1 = 0";
}
else if ($value === '')
{
$criteria->condition = $column." = ''";
}
else
{
$criteria->compare($column, $value, $partialMatch, $operator, TRUE);
}
$this->getDbCriteria()->mergeWith($criteria);
return $this;
}
}
让ar执行queryall和queryrow方法返回数组的更多相关文章
- 083、Java数组之方法返回数组
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- JAVAEE——SpringMVC第二天:高级参数绑定、@RequestMapping、方法返回值、异常处理、图片上传、Json交互、实现RESTful、拦截器
1. 课前回顾 https://www.cnblogs.com/xieyupeng/p/9093661.html 2. 课程计划 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 ...
- JS 数组方法 array数组声明 元素的添加和删除 等
声明数组 var arr1 = [1,2,3,4,5]; var arr2 = new Array(100); //声明长度为100的arr2数组. arr2=[]; arr2.length = 10 ...
- C#线程池ThreadPool.QueueUserWorkItem接收线程执行的方法返回值
最近在项目中需要用到多线程,考虑了一番,选择了ThreadPool,我的需求是要拿到线程执行方法的返回值, 但是ThreadPool.QueueUserWorkItem的回调方法默认是没有返回值的,搜 ...
- 在IE浏览器中执行OpenFlashChart的reload方法时无法刷新的解决方法
由于项目需求,需要在网页上利用图表展示相关数据的统计信息,采用了OpenFlashChart技术.OpenFlashChart是一款开源的以Flash和Javascript为技术基础的免费图表,用它能 ...
- EFCore执行Sql语句的方法:FromSql与ExecuteSqlCommand
前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery ...
- 通过反射执行get、set方法
Class clazz = sourceObj.getClass(); 1.获取所有属性 BeanInfo beanInfo = Introspector.getBeanInfo(clazz); Pr ...
- 如何循环遍历document.querySelectorAll()方法返回的结果
使用JavaScript的forEach方法,我们可以轻松的循环一个数组,但如果你认为document.querySelectorAll()方法返回的应该是个数组,而使用forEach循环它: /* ...
- 是否需要手动执行DataContext的Dispose方法?
我们知道DataContext实现了IDisposable接口.在C#中,凡是实现了IDisposable接口的类,都推荐的使用using语句.如下: using (DataContext db = ...
随机推荐
- uva10870 递推关系Recurrences
Consider recurrent functions of the following form:f(n) = a1f(n - 1) + a2f(n - 2) + a3f(n - 3) + : : ...
- dwz 在dialog里打开dialog
需要在打开dialog里再弹出一个dialog的话,需要在打开第一个dialog的地方指定rel,这样就可以弹出第二个dialog而不是替换掉第一个dialog <a class="a ...
- oracle数据表创建分区与查询
场景: 遇到1亿数据量的数据需要根据用户名做些数据统计分析,想直接做些聚合计算基本没可能,于是打算先根据日期按照年月创建分区,然后对各个分区分别进行统计,最后汇总结果. 有两种方法,分别是手工设置分区 ...
- ajax 请求多张图片数据
需求分析: 实现对网页上的图片进行显示.由于读取图片名称相同,而图片内容已发生改变.采用网上所用的要求浏览器不缓存的操作不生效 <META http-equiv="Pragma&quo ...
- maven之clean、install命令
1.进入到maven根目录,执行mvn compile命令会在根目录生成target文件(参照maven之helloworld案例),如下图: 2.执行mvn clean可将根目录下生成的target ...
- MAS 移动业务整合系统
AppCan MAS是基于高性能NODEJS架构开发的企业移动后端整合系统,内置各种标准协议组件,统一移动业务前后端标准开发技术:同时通过基于策略配置的数据缓存机制,聚合业务数据并发连接不同的后端业务 ...
- 2015年最有价值的30个响应式WORDPRESS主题
http://www.chinaz.com/design/2015/0521/408204.shtml 必须承认,Wordpress依然是目前最流行.最易用的内容管理系统,合理地使用Wordpress ...
- Android-Universal-Image-Loader 图片异步加载类库的使用(超详细配置)
这个图片异步加载并缓存的类已经被很多开发者所使用,是最常用的几个开源库之一,主流的应用,随便反编译几个火的项目,都可以见到它的身影. 可是有的人并不知道如何去使用这库如何进行配置,网上查到的信息对于刚 ...
- iOS开发——UI进阶篇(十八)核心动画小例子,转盘(裁剪图片、自定义按钮、旋转)图片折叠、音量震动条、倒影、粒子效果
一.转盘(裁剪图片.自定义按钮.旋转) 1.裁剪图片 将一张大图片裁剪为多张 // CGImageCreateWithImageInRect:用来裁剪图片 // image:需要裁剪的图片 // re ...
- POJ2104 —— K-th number
1.题目大意:区间第k小,什么修改没有... 2.分析:这个是可持久化线段树,也是主席树,解释一下,n个线段树是怎么存下的,就是每一颗线段树和前一个有logn个点不一样 然后我们只需要一个线段树开lo ...