2011-08-08 652 views
0

我讀了很多關於可容納的東西。老實說,我已閱讀所有文檔,我有它在我的用戶控制器工作,但有些事情不清楚:CakePHP:Containable的基礎知識

  1. 我必須使用它在所有操作或只在Index()?
  2. 我是否必須在每個控制器索引()函數中定義它,或者是否足以在用戶控制器中定義它
  3. 怎麼辦? Country_ID是連接到用戶和相關模型的FK?例如:

    function index() { 
        $this->paginate = array(
          'limit'=>10, 
          'order'=>'User.created DESC', 
          'fields'=>array('User.id','User.name', 'User.country_id', 'User.email'), 
          'contain'=>array(
           'Post', 
           'Company' => array(
            'Country' => array(
             'fields' => array('id', 'country') 
            ) 
           ), 
           'Position' => array(
            'Profession' 
           ), 
           'Preference', 
           'Country', 
           'Type' 
           ), 
    
         ); 
         $this->set('users',$this->Paginate('User')); 
    

    }

國家是兩者都連接到用戶和公司。如何定義這個而不創建重複?

非常感謝!

回答

1

您似乎對可容納的問題有錯誤的想法。它「允許您過濾和限制模型查找操作」。只要需要在find()中包含(或排除)特定的相關模型數據,就可以使用它。

例如,用戶擁有一個配置文件,具有屬於公司的多個角色。您需要爲用戶獲得所有角色和相關公司,但您不需要該配置文件,您可以使用$this->User->find('first',array('conditions'=>...,'contain'=>array('Role'=>array('Company'))))

它與index()或users_controller無關。

Country is both connected to User and Company. How to define this without creating duplicates?什麼重複?