2011-12-23 2 views
1

나는했습니다이YII의 범위와 관련하여 문제

$model=UserCategory::model()->findAll(array('with'=>array('user.department','totalCount'=>array('condition'=>"user.department.name='Science'")))); 

하지만 그것이 말하는 알 수없는 열 그렇게 말했다 왜 'user.department.name가'내가 알고하지만 난 그것을

I를 구현하는 방법과 같은 나는 부서 과학에 속하는 각 카테고리에서 총 수의 사용자를 찾으려면 다음과 같은 관계를 한마디로

UserCategory 
'user' => array(self::HAS_MANY, 'UserCategory', 'categoryId'), 
'totalCount' => array(self::STAT, 'UserCategory', 'categoryId'),//counts total of user under each category 
User 
'userCat' => array(self::BELONGS_TO, 'UserCategory', 'categoryId'), 
'department' => array(self::BELONGS_TO, 'Department', 'departmentId'), 
Department 
'userDept' => array(self::HAS_MANY, 'User', 'departmentId'), 

이 맞는지

답변

0

부서 과학에 속하는 각 카테고리에서 총 수의 사용자를 찾으려면 '에서는 totalCount'관계의 올바른 정의는 다음과 같이 somehing 수 있습니다 : 나는의 이름으로 가정 '카테고리'를 사용 *

'totalCount' => array(self::STAT, 'User', 'category' /* *See note below */, 'condition'=>'user.department=Science'), 

User 테이블의 범주 테이블에 대한 foreing 키가 포함 된 특성 물론 속성의 올바른 이름으로 변경해야합니다.

이제 간단히 $ model-> totalCount가 필요한 숫자를 반환합니다.

하지만 위 코드의 구문이 정확함을 100 % 확신 할 수는 없지만 한번 시도한 후에는 약간의 피드백으로 쉽게 수정할 수 있습니다.

+0

아니요. 알 수없는 'name'열이 표시됩니다. 참고 :이 이름은 테이블 – iThink

+0

의 필드입니다. 'totalCount'관계는 무엇을 나타 냅니까? –

+0

아마도 "=> array ('condition'=> 'name = Science')"줄을 잘못된 위치에 두는 것입니다. 'User.Department' '=> 배열 ('조건 '=>'이름 = 과학 '), 'totalCount ', )))) -> (모델명 : SpecialCategory :: Model() findAll(); 그건 의미가 있지만, 그게 당신이하려는 일인지 확실하지 않습니다. –