我如何在 CakePHP 3 中的多个列上连接两个表?
How can I join two tables on multiple columns in CakePHP 3?
我正在使用 CakePHP v3
我有一个 table 看起来像这样:
文件:
id | section | paragraph
-------------------------
1 2 4
正文:
id | section | paragraph | theText
---------------------------------------
12 2 4 Blah blah
所以在 SQL 我可以做这样的事情;
SELECT * FROM document
INNER JOIN text
ON document.section=text.section
AND document.paragraph=text.paragraph
如何使用 ORM 在 CakePHP 中执行类似的操作?两个 table 中的主键都设置为 id 列。
我查看了 Cake 文档中的 foreignKey
和 binidingKey
,但我看不到如何在其中使用多列。
http://book.cakephp.org/3.0/en/orm/associations.html.
FWIW,这是一个代码示例,显示了我想如何访问它们。
$cond = [
'contain' => ['text']
];
$docs = $this->Documents->find('all',$cond);
是的,这是可能的。就用数组来表示应该匹配的列:
$this->belongsTo('Things', [
'bindingKey' => ['key1', 'ke2'],
'foreignKey' => ['fk1', 'fk2']
]);
这将匹配 key1 = fk1
和 key2 = fk2
我正在使用 CakePHP v3
我有一个 table 看起来像这样:
文件:
id | section | paragraph
-------------------------
1 2 4
正文:
id | section | paragraph | theText
---------------------------------------
12 2 4 Blah blah
所以在 SQL 我可以做这样的事情;
SELECT * FROM document
INNER JOIN text
ON document.section=text.section
AND document.paragraph=text.paragraph
如何使用 ORM 在 CakePHP 中执行类似的操作?两个 table 中的主键都设置为 id 列。
我查看了 Cake 文档中的 foreignKey
和 binidingKey
,但我看不到如何在其中使用多列。
http://book.cakephp.org/3.0/en/orm/associations.html.
FWIW,这是一个代码示例,显示了我想如何访问它们。
$cond = [
'contain' => ['text']
];
$docs = $this->Documents->find('all',$cond);
是的,这是可能的。就用数组来表示应该匹配的列:
$this->belongsTo('Things', [
'bindingKey' => ['key1', 'ke2'],
'foreignKey' => ['fk1', 'fk2']
]);
这将匹配 key1 = fk1
和 key2 = fk2