YII dataProvider отношение CDbCriteria

У меня проблема с использованием CDbCriteria в действии индекса контроллера. У меня есть 2 класса: событие и посетитель.
событие класса имеет много участников, и я хочу, чтобы мое действие индекса события отображало только список событий, в которых текущий зарегистрированный пользователь является участником …

  $criteria = new CDbCriteria(array(
'order'=>'event_date desc',
'with'   => array('attendees'=>array('alias'=>'attend')),
'condition'=>'attend.uid = ' . Yii::app()->user->id,
));
$dataProviderAtt=new CActiveDataProvider('Event',
array(
'criteria'  => $criteria,
)
);

$this->render('index',array(
'dataProvider'=>$dataProviderAtt,
));

это не работает в БД с сообщением:
CDbCommand не удалось выполнить инструкцию SQL: SQLSTATE [42000]: синтаксическая ошибка или нарушение прав доступа: 1066 Не уникальная таблица / псевдоним: «пользователь»

мои отношения в классе посетителя установлены так:

public function relations()
{
// NOTE: you may need to adjust the relation name and the related
// class name for the relations automatically generated below.
return array(
'user' => array(self::BELONGS_TO, 'YumProfile', 'uid', 'alias'=>'user'),
);
}

Я попытался изменить значение по умолчанию в модели участников и определить несколько псевдонимов:

   public function defaultScope()
{
static $counter = 0;
return array(
'with' => array('user'=>array('alias'=>'user'.($counter++))),
//'with' => 'user',
'order' => 'score DESC',
);
}

но, похоже, это не решает проблему, и у меня появляется больше ошибок. Правильно ли установлены мои критерии?
Спасибо ребята за вашу помощь

0

Решение

ты ищешь

'on' => 'attend.uid = ' . Yii::app()->user->id,

как в вашем отношении к пользователю

function relations()
{
return array(
'user' => array(
self::BELONGS_TO,
'attendees',
'',
'on' => 'attendees.uid = ' . Yii::app()->user->id,
),
);
}
0

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

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

По вопросам рекламы [email protected]