2011-12-23 12 views
1

私はこののYiiスコープと関係の問題

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

ような何かをしましたが、それは「user.department.name」私はそれがそう言って、なぜ、私は知っているが、どのように私はそれを

を実装します不明な列言います私は部門の科学に属する各カテゴリの下総数のユーザーを検索する以下の関係要するに

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

は」VEの

答えて

0

部門の科学に属する各カテゴリの下総数のユーザーを検索するには、「totalCountプロパティ」関係の正しい定義は次のようにsomehingことがあります私はの名前としてそれを想定して「カテゴリ」を使用*

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

属性には、Userテーブルのカテゴリテーブルに対するforeingキーが含まれています。もちろん、属性の正しい名前に変更する必要があります。

これで、単純に$ model-> totalCountが必要な数値を返します。

しかし、私は上記のコードの構文の正しさを100%確信しているわけではありませんが、一度試してみるとフィードバックで簡単に修正できます。

+0

いいえ、「不明な列」という名前です。注:この名前は表Departmentのフィールドです – iThink

+0

'totalCount'という関係は何を表していますか? –

+0

おそらくあなたが間違った場所に "=> array( 'condition' => 'name = Science')という行を置きます。 $ model = SpecialCategory :: model() - > with(array( 'User.Department' '=>配列('条件 '=>'名前=サイエンス ')、 ' totalCount '、 ))) findAll(); それは理にかなっていますが、それがあなたがやろうとしていることがわかりません。 –