2014-09-19 3 views
0

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

$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 Не уникальный стол/псевдоним: 'пользователь'

мои отношения в классе Attendee устанавливаются так:

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'), ); }

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

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

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

ответ

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, 
     ), 
    ); 
} 
Смежные вопросы