首页 > 解决方案 > 如何连接 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 时感觉有点不对劲(然后再次......)。

标签: phppropel2

解决方案


您需要执行显式连接类型,因为您尚未在架构中定义关系,例如:

->addJoin(Table1TableMap::COL_A, Table2TableMap::COL_B, Criteria::JOIN_TYPE)
// INNER_JOIN, INNER_JOIN, etc

推荐阅读