2016-03-08 2 views
1

Вот мой запрос 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 

Я попытался установить пагинацию 1000 в CActiveDataProvider, но это ничего не работает.

$dataProvider= new CActiveDataProvider($model,array('criteria'=>$criteria,'pagination' =>array('pageSize'=>1000))); 

даже я установить нумерацию страниц в false, но до сих пор никакого результата

$dataProvider= new CActiveDataProvider($model,array('criteria'=>$criteria,'pagination' =>false)); 

ответ

0

У вас Parse error в свой $criteria->condition (job.current_assigned="'.Yii::app()->user->id.'"")

Try, чтобы заменить его с этой строкой:

$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."'"; 
+0

Я решил это, но все равно никакого результата. он возвращает мне пустой массив – Dhara

+0

. Попробуйте включить sql-запросы и получить реальный запрос, который создает эти критерии. Например. этот ответ может помочь вам включить ведение журнала запросов в Yii: http://stackoverflow.com/a/9898068/2253302 –

Смежные вопросы