- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我需要从名为 Hospitals 的表中获取具有相同条件的一些记录:
首先获取与 $city 参数匹配的城市。其次获取状态与 $state 参数匹配的那些。第三把剩下的按A-Z排序
我需要在一个查询中获取所有这些,因为我要对结果集进行分页,所以我选择 CSqlDataProvider,它接收一个 sql、计数和分页作为初始配置: http://www.yiiframework.com/doc/api/1.1/CSqlDataProvider
所以,我正在考虑将额外的字段作为 bool 值并按这些字段对它们进行排序,例如:same_city、same_state。
所以让我们假设这是转到 CSqlDatProvider 的结果 sql(当我用请求中的参数值替换时):
select *,
IF(city like '%San Antonio%', 1, 0) as same_city,
IF(state=44, 1, 0) as same_state
from hospitals
order by same_city DESC, same_state DESC, hospital_name ASC;
如果我将此字符串分配给 CSqlDataProvider,我将无法分页,因为我正在对订单进行硬编码...但是我需要此特定订单,以便记录检索标准成功。
$arHospitals = new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'pagination'=>array(
'pageSize'=>30,
),
));
如果我运行上面的代码,它会返回所有匹配的记录,无论 pageSize 是多少。但是,如果我根据 yii 文档使用分页,我只会得到分页指示的记录,但对我来说是一个无意义的顺序......我在字段中需要以下顺序:same_city DESC,same_state DESC,hospital_name ASC。
$arHospitals = new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'asc'=>array('hospital_name'),
'desc'=>array('same_city', 'same_state'),
),
),
'pagination'=>array(
'pageSize'=>30,
),
));
关于如何解决这个问题的任何想法?如果我遗漏了有关该问题的一些关键信息,请告诉我。
最佳答案
像这样的东西应该可以工作:
$arHospitals = new CSqlDataProvider($sql, array(
'totalItemCount'=>$count,
'sort'=>array(
'attributes'=>array(
'virtualFieldName'=>array( //virtual field name
//give no possibility to sort in any other order than
'asc'=>'same_city DESC, same_state DESC, hospital_name ASC',
'desc'=>'same_city DESC, same_state DESC, hospital_name ASC',
'label'=>'Default Sort Order'
),
),
'defaultOrder'=>array(
'virtualFieldName'=>CSort::SORT_ASC, //default sort value
),
),
'pagination'=>array(
'pageSize'=>30,
),
));
参见 http://www.yiiframework.com/doc/api/1.1/CSort#attributes-detail了解更多信息。
关于php - 在 yii 中使用 CSqlDataProvider 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19864784/
我有一个使用 CSqlDataProvider 的非常复杂的查询,我试图让分页 totalItemCount 工作,但它返回了错误的计数。我试图创建第二个 SQL 来计算项目,但这真的很难,有人可以帮
有没有办法限制 CSqlDataProvider?例如,当我将 totalItemCount 强制设置为 3 时,不会考虑结果。 $count=Yii::app()->db->createComman
我需要从名为 Hospitals 的表中获取具有相同条件的一些记录: 首先获取与 $city 参数匹配的城市。其次获取状态与 $state 参数匹配的那些。第三把剩下的按A-Z排序 我需要在一个查询中
我正在使用 CSqlDataProvider 构建 CGridview 我不能使用 CActiveRecord,因为结果集很大并且会引发内存错误。列需要可排序。我该如何实现? 示例 SQL $orde
我试图在使用 yii 的以下 sql 语句中得到很少的结果,但是有一些错误....!!! $sql="SET @pStat=-1; SET @pdt=0; SELECT * FROM (SELEC
我在 CGridView 中使用的代码在 $data->gen_id 和 $data->erc_gen 的列值中为我提供了一个空值,当我使用浏览器检查器进行检查时,它给了我 ercgen/admin
我是一名优秀的程序员,十分优秀!