foreach не работает в cdbcriteria

В моем веб-приложении Yii foreach не работает в cdbcriteria

$criteria = new CDbCriteria;
$assignclass = Assignclass::model()->findAllByAttributes(array('usertypeid' => Yii::app()->user->usertypeid));
foreach ($assignclass as $assign) {
$criteria->addCondition('t.courseid= '.$assign->courseid.' OR ');
}

При использовании этого кода возникает ошибка CDbException, как,

CDbCommand не удалось выполнить инструкцию SQL: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1064 В синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом

') AND (t.courseid= 6 OR )) AND (t.courseid= 7 OR )) AND (t.courseid= 9 OR ))' at line 1.

Выполненный оператор SQL был:

 SELECT COUNT(DISTINCT `t`.`studentid`) FROM `student` `t` LEFT OUTER JOIN `course` `course` ON (`t`.`courseid`=`course`.`courseid`) LEFT OUTER JOIN `batch` `batch` ON (`t`.`batchid`=`batch`.`batchid`) WHERE ((((t.courseid= 5 OR ) AND (t.courseid= 6 OR )) AND (t.courseid= 7 OR )) AND (t.courseid= 9 OR )).

Что я делаю неправильно?

2

Решение

попробуй это

$criteria = new CDbCriteria;
$assignclass = Assignclass::model()->findAllByAttributes( array('usertypeid' => Yii::app()->user->usertypeid));
$cond = '';
foreach ($assignclass as $assign) {
if($cond == '')
$cond = 't.courseid= '.$assign->courseid;
else
$cond .= ' OR t.courseid= '.$assign->courseid;
}
if($cond != '')
$criteria->condition = $cond;
1

Другие решения

Других решений пока нет …