使用两个(复合)外键关系链接两个表

时间:2016-06-06 12:56:51

标签: cakephp associations cakephp-3.0

  • 版本:3.2.1

关系

表B中的两列与表A中的两列相关联。

  • 表A - > hasMany - >表B
  • 表B - > belongsTo - >表A

  • B.a_id = A.a_id

  • B.a_name = A.a_name

食谱

在食谱中找不到任何例子。 http://book.cakephp.org/3.0/en/orm/associations.html

我如何指定这些关系?已经尝试过这个:

$this->hasMany('B', [
        'conditions' => ['A.a_id' => 'B.a_id', 'A.a_name' => 'B.a_name']
    ]);

而且:

$this->hasMany('B1', [
        'foreignKey' => 'a_id',
        'joinType' => 'INNER',
        'className' => 'B'
    ]);

$this->hasMany('B2', [
        'foreignKey' => 'a_name',
        'joinType' => 'INNER',
        'className' => 'B'
    ]);

1 个答案:

答案 0 :(得分:5)

可以使用数组指定复合键,外键以及几乎所有地方的主键都支持复合键。

$this->hasMany('B', [
    'foreignKey' => [
        'a_id',
        'a_name'
    ],
    'bindingKey' => [
        'a_id',
        'a_name'
    ]
]);

文档中的示例不会受到影响,您可能需要打开票证over at GitHub

PS。 hasMany个关联不支持joinType选项。