CakePHP连接表

时间:2014-09-18 12:23:38

标签: cakephp model

我有一个连接模型UserCommission,它连接用户模型和委员会模型。 用户模型属于组织模型。而组织模型有很多用户模型。

在我的模型UserCommission中,$this->find('all')我得到了这个数组:

array(
    (int) 0 => array(
        'UserCommission' => array(
            'id' => '1247',
            'user_id' => '872',
            'commission_id' => '13'
        ),
        'User' => array(
            'id' => '872',
            'organisation_id' => '6', // I need data related to Organisation model
        ),
        'Commission' => array(
            'id' => '13',
            'nom' => 'SALARIES CE'
        )
    ),
    ...
)

如何从Organization模型中获取数据,以便返回的数组如下:

array(
    (int) 0 => array(
        'UserCommission' => array(
            'id' => '1247',
            'user_id' => '872',
            'commission_id' => '13'
        ),
        'User' => array(
            'id' => '872',
            'organisation_id' => '6',
        ),
        'Commission' => array(
            'id' => '13',
            'nom' => 'SALARIES CE'
        ),
        'Organisation' => array(
            'id' => '6',
            'nom' => 'The Organisation #6'
        )
    ),
    ...
)

模型关联:
用户所属组织
组织有很多用户
用户hasAndBelongsToMany佣金(与UserCommission)
Commission hasAndBelongsToMany User(with UserCommission)
UserCommission属于用户
UserCommission属于委员会

模型表:
用户(id; organisation_id;用户名; ...)
佣金(id; commission_name; ...)
组织(id; organisation_name; ...)
UserCommission(id; user_id; commission_id; ...)

1 个答案:

答案 0 :(得分:0)

如果正确配置了关系,您可以使用:

$User->recursive=2;
$User->find('all')

这种解决方法的问题在于,您将获得嵌套在用户数组中的组织信息,而不是在同一级别,这是非常糟糕的资源。这实际上取决于您的数据库中有多少组织,但有时最好只是进行第二次查询以检索所需信息,而不是只是为了一次性进行大量查询。