Cakephp有一个Model和hasAndBelongsToMany Model

时间:2014-08-11 17:10:27

标签: php cakephp relationship cakephp-model

我遇到CakePHP 2.x中的CakePHP belongsTo和hasAndBelongsToMany关系有问题

示例情况

用户

id
organisation_id

组织

id
name

user_organisation_permissions

id
user_id
organisation_id

的usermodel

hasAndBelongsToMany(Organisation);
belongsTo(Organisation)

用户属于一个组织,但它拥有多个组织的权限,从而导致以下冲突:

$aUser = $this->User->findById(1);
print_r($aUser);

// Output

# With the belongsTo relation
array(
    'User' => array(
        'id' => 1,
        'organisation_id' => 1
        'name' => 'Test User'
    ),
    'Organisation' => array(
        'id' => 1,
        'name' => 'Test organisation'
    )
);

# With the hasAndBelongsToMany relation
array(
    'User' => array(
        'id' => 1,
        'organisation_id' => 1
        'name' => 'Test User'
    ),
    'Organisation' => array(
        1 => array(
            'id' => 1,
            'name' => 'Test organisation'
        ),
        2 => array(
            'id' => 1,
            'name' => 'Test organisation'
        )
    )
);

# When both relations are enabled it doesn't work

有没有人能解决这场冲突?

是否有"原生" CakePHP解决这个冲突的方法吗?

1 个答案:

答案 0 :(得分:0)

答案实际上在CakePHP 2.x Cookbook中。

与同一型号的多重关系

在某些情况下,模型与另一个模型具有多个关系。例如,您可能有一个Message模型与User模型有两个关系:一个与发送消息的用户有关,另一个与接收消息的用户有关。消息表将包含字段user_id,但也包含字段recipient_id。现在,您的Message模型可能类似于:

class Message extends AppModel {
    public $belongsTo = array(
        'Sender' => array(
            'className' => 'User',
            'foreignKey' => 'user_id'
        ),
        'Recipient' => array(
            'className' => 'User',
            'foreignKey' => 'recipient_id'
        )
    );
}

来源:http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#multiple-relations-to-the-same-model