Yii 1:CActiveDataProvider不返回所有记录
问题描述:
这是我的CActiveDataProvider查询。Yii 1:CActiveDataProvider不返回所有记录
$startDate='2016-02-28';
$endDate='2016-03-05';
$criteria= new CDbCriteria();
$criteria->with=array('job','job.serviceType');
$criteria->order='t.uploaded_date DESC';
$criteria->select='t.id,t.job_master_id,t.image_path,t.image_name,t.uploaded_date';
$criteria->condition="SUBSTRING_INDEX(t.`image_name`,'.',-1) in ('jpg','jpeg','png','gif','JPG','PNG','GIF','JPEG') and job.trade_company_id='".Yii::app()->user->getState('TradeCompanyId')."' and job.current_assigned='".Yii::app()->user->id."'";
$criteria->addBetweenCondition('DATE(uploaded_date)', $endDate, $startDate);
这给了我0行。但是当我在mysql中使用相同的查询时,它给了我适当的结果。以下是相同的MySQL查询
SELECT `t`.`job_master_id`
FROM `media` `t`
LEFT OUTER JOIN `job_master` `job` ON (`t`.`job_master_id` = `job`.`id`)
INNER JOIN `service_type_master` `serviceType` ON (`job`.`service_type_id` = `serviceType`.`id`)
WHERE (
(
SUBSTRING_INDEX(t.`image_name` , '.' , -1) IN ('jpg', 'jpeg', 'png', 'gif', 'JPG', 'PNG', 'GIF', 'JPEG')
AND job.trade_company_id = '7' AND job.current_assigned = "14"
)
AND (
DATE(uploaded_date) BETWEEN '2016-02-28' AND '2016-03-05'
)
)
ORDER BY `t`.`uploaded_date` DESC
我试着在CActiveDataProvider设置分页至1000,但是这没有什么工作。
$dataProvider= new CActiveDataProvider($model,array('criteria'=>$criteria,'pagination' =>array('pageSize'=>1000)));
即使我设置分页到false
但还是没有结果
$dataProvider= new CActiveDataProvider($model,array('criteria'=>$criteria,'pagination' =>false));
答
你有Parse error
到您的$criteria->condition
(job.current_assigned="'.Yii::app()->user->id.'""
)
尝试用此字符串来替换它:
$criteria->condition="SUBSTRING_INDEX(t.`image_name`,'.',-1) in ('jpg','jpeg','png','gif','JPG','PNG','GIF','JPEG') and job.trade_company_id='".
Yii::app()->user->getState('TradeCompanyId').
"' and job.current_assigned='".Yii::app()->user->id."'";
我解决了这个问题,但仍然没有结果。它返回空白数组 – Dhara
尝试启用日志sql查询并获得由此$标准创建的真正查询。例如。此答案可以帮助您在Yii中启用查询日志记录:http://*.com/a/9898068/2253302 –