0

我读了很多关于可包含性的内容。老实说,我已经阅读了所有文档,我可以在我的用户控制器中使用它,但有些事情还不清楚:

  1. 我必须在所有操作中使用它还是仅在 Index() 中使用它?
  2. 我必须在每个控制器 index() 函数中定义它还是在用户控制器中一次就足够了
  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 回答 1

1

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

例如,一个 User hasOne Profile,hasMany Roles,属于某个 Company。并且您需要获取用户的所有角色和相关公司,但您不需要配置文件,您可以使用$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?什么重复?

于 2011-08-08T07:49:43.713 回答