【问题标题】:How can I join two tables on multiple columns in CakePHP 3?如何在 CakePHP 3 的多个列上连接两个表?
【发布时间】:2015-09-01 22:20:25
【问题描述】:

我正在使用 CakePHP v3

我有一张如下所示的表格:

文档:

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

如何在 CakePHP 中使用 ORM 做这样的事情?两个表的主键都设置为id列。

我在 Cake 的文档中查看了 foreignKeybinidingKey,但看不到如何在其中使用多个列。

http://book.cakephp.org/3.0/en/orm/associations.html.

FWIW,这是一个代码示例,显示了我想如何访问它们。

$cond = [
        'contain' => ['text']
      ];

$docs = $this->Documents->find('all',$cond);

【问题讨论】:

  • 查看“条件”选项以了解如何设置模型
  • @RobbieAverill 你的意思是当我试图访问它们时?所以问题是,除非他们正确加入,否则他们的表格大小会膨胀到一个难以处理的大小。据我了解,条件只是在加入后执行的 WHERE 命令。无论哪种方式,我都会更新问题以包含它。

标签: php mysql cakephp cakephp-3.0


【解决方案1】:

是的,这是可能的。只需使用数组来表示应该匹配的列:

$this->belongsTo('Things', [
    'bindingKey' => ['key1', 'ke2'],
    'foreignKey' => ['fk1', 'fk2']
]);

这将匹配 key1 = fk1key2 = fk2

【讨论】:

    猜你喜欢
    • 2015-08-05
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多