我在控制器索引操作中使用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,
));
这在带有消息的DB中不起作用: 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'),
);
}
我尝试更改与会者模型中的defaultscope并定义多个别名:
public function defaultScope()
{
static $counter = 0;
return array(
'with' => array('user'=>array('alias'=>'user'.($counter++))),
//'with' => 'user',
'order' => 'score DESC',
);
}
但它似乎没有解决问题,然后我有更多的错误。我的标准是否正确设置? 谢谢你的帮助
答案 0 :(得分: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,
),
);
}