Как объединить две таблицы в Propel, для которых не определен внешний ключ?

У меня есть проект, который использует Propel 2, и есть две таблицы, к которым я хочу присоединиться в определенном поле, но там нет связи с внешним ключом. Я просто хочу сопоставить их на основе этого значения. К сожалению, я не могу заставить его работать, и документация Propel, как бы она ни старалась, все еще не имеет хороших ссылок. Как мне это сделать?

Что я пробовал:

echo Table1Query::create()
        ->addJoin(Table1TableMap::COL_A, Table2TableMap::COL_B)
        ->where('Table2.C=?', 'asd')
        ->toString();

Это не удается на where() расставаться с System error Cannot determine the column to bind to the parameter in clause "Table2.C=?".

Я знаю, что могу получить соединение PDO и вернуться к чистому SQL, который определенно будет проще, но это выглядит неправильно при использовании ORM ( опять же...).

0 ответов

Вам нужно сделать явный тип соединения, поскольку вы не определили отношение в своей схеме, например:

->addJoin(Table1TableMap::COL_A, Table2TableMap::COL_B, Criteria::JOIN_TYPE)
// INNER_JOIN, INNER_JOIN, etc
Другие вопросы по тегам