пока пришел к такому. но может есть норм вариант? мне этот не нравится своей сложностью
public function getTeam(){
if($this->getIsLeader())
return $this->hasMany(self::className(), ['team_id'=>'id']);
else{
return User::find()->where(['id'=>$this->team_id])->one()->getTeam()->where('id != :uid', [':uid'=>$this->id])
->union($this->hasOne(self::className(), ['id'=>'team_id']));
}
}
public function getTeam_count(){
return $this->getTeam()->count();
}
хотя sql норм вроде
(SELECT * FROM `user` WHERE (id != 8538) AND (`team_id`=1)) UNION ( SELECT * FROM `user` WHERE `id`=1 )