Я использую 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? Основной ключ в обеих таблицах настроен как столбец идентификаторов.
Я изучил foreignKey
и binidingKey
в документах Cake, но я не вижу, как использовать в них несколько столбцов.
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