如何限定relation里面的relation 的范围?

Organ User  Attendance 3个model。

user有organ的外键Organ_id,Attendance 有User的外键user_id;

Organ 1对多User  User  1对多Attendance

User中通过'attendance'=>array(self::HAS_ONE,'Attendance','user_id','joinType'=>'left outer join','on'=>'??.attendanceDate=:attendanceDate'),可以关联出user今天的出勤记录。

但怎样在Organ中关联出勤的人呢?类似如下实现,'userListAttendance'=>array(self::HAS_MANY,'User','organ_id','condition'=>'state='考勤'','condintion'=>'attendance!=null'),

这样设置'condintion'会出错,没有合法列attendance,因为attendance是user的relation。

我把题目和内容修改了,感觉就差1步就可以实现了。但不知道在哪里?

是不是这样的问题:给定A, B, C三个model,你希望获得A列表,限定条件是基于C的。

这种情况用AR来做比较复杂。你可以试试下面的代码:



A::model()->with('B.C'=>array(关于C的限定条件))->together()->findAll();


我用C的属性做限定,成功了。 ;D

但前提是需要把 用C的别名做前缀才可以限定,而C的别名是有可能变动的,不科学。

我直接用C的表名做前缀会说

Unknown column ‘_general_attendance.situation’ in ‘where clause’
,因为这里的situation或者别的字段是很容易就重名的。

目前只能这样了:用表名做前缀,并且设置alias选项。

请问怎么设置alias选项?

越来越感觉到yii强大了。谢谢qiang!

'alias'是relation的一个选项。和'condition'等其他选项一样设置。