問題:CDbCriteriaが間違った結果を出力します。
モデル検索機能です。
public function summary()
{
// Warning: Please modify the following code to remove attributes that
// should not be searched.
$criteria=new CDbCriteria;
$criteria->select = 't.*';
if (Yii::app()->user->checkAccess('Reviewer')):
$criteria->addSearchCondition('t.reviewers',Yii::app()->user->id,false, 'AND');
endif;
if (Yii::app()->user->checkAccess('Implementer')):
$criteria->addSearchCondition('t.implementers',Yii::app()->user->id,false, 'OR');
endif;
if (Yii::app()->user->checkAccess('Creator')):
$criteria->compare('t.creator',Yii::app()->user->id, false, 'OR');
endif;
$criteria->compare('request_type_id',$this->request_type_id);
$criteria->compare('request_category_id',$this->request_category_id);
$criteria->compare('financial_type_id',$this->financial_type_id);
$criteria->compare('urgency_id',$this->urgency_id);
$criteria->compare('eta_date',$this->eta_date,true);
if (Yii::app()->user->checkAccess('Reviewer') || Yii::app()->user->checkAccess('Implementer')):
$criteria->join = "JOIN profiles p ON (p.user_id = t.creator)";
if($this->creator):
$criteria->addSearchCondition('p.firstname',$this->creator, true, 'AND');
endif;
endif;
if(isset($this->status)):
$criteria->compare('t.status',$this->status);
endif;
$data = new CActiveDataProvider(get_class($this), array(
'criteria'=>$criteria,
'pagination'=>false,
));
$_SESSION['all'] = $data;
$data = new CActiveDataProvider(get_class($this), array(
'pagination'=>array('pageSize'=> Yii::app()->user->getState('pageSize',
Yii::app()->params['defaultPageSize']),),
'criteria'=>$criteria,
));
$_SESSION['limited'] = $data;
return $data;
}
上記のコードは、CWebLogRouteでトレースしたときにクエリを出力しましたが、レコードがありません。
SQLのクエリ:SELECTt。*
request
t
FROMJOINプロファイルpON(p.user_id = t.creator)WHERE t.reviewers LIKE:ycp1 LIMIT 10
これらのクエリを次のクエリに変更すると、レコードが出力されました。
SELECTt 。*
request
t
FROMJOINプロファイルpON(p.user_id = t.creator)WHERE t.reviewers LIKE'%3%' LIMIT 0、30
どうすれば問題を解決できますか?