CakePHP:Containable的基础知识

时间:2011-08-08 05:15:14

标签: 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'));
    

    }

  4. 国家/地区均已与用户和公司相关联。如何在不创建重复项的情况下定义它?

    非常感谢!

1 个答案:

答案 0 :(得分:1)

你似乎对可控制有错误的想法。它“允许您过滤和限制模型查找操作”。只要需要在find()中包含(或排除)特定的相关模型数据,就可以使用它。

例如,用户hasOne个人资料,hasMany角色,属于公司。您需要为用户获取所有角色和相关公司,但您不需要该配置文件,您可以使用$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?有什么重复?