Как объединить две таблицы в 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