我有一张有机构的桌子。现在我想通过匹配表匹配其中两个(一个机构可以容纳另一个)。因为这是一个多对多的关系(我猜)我需要一个与matching_table的JOIN和一个与原始表的第二个JOIN。
SELECT
i.id, i.inst_name, i.inst_name
FROM
institution i
JOIN
matching_table m ON i.id = m.foo_id
JOIN
institution i2 ON m.bar_id = i2.id
WHERE
i.id = 42
在CakePHP3中描述此问题的最佳方法是什么?
我试过
$this->belongsToMany('Institutions', [
'through' => 'matching_table',
'foreignKey' => 'i2'
]);
在我的机构表中没有成功。 SQL似乎是正确的。我得到两个具有正确行数的查询结果但是如果我尝试这个我得到一个空的实体...
$institutions = $this->Institutions->get($id, [
'contain' => ['Institutions']
]);