如何使用两个表进行连接?

时间:2010-06-03 07:06:16

标签: symfony1 criteria propel

HI,

我尝试翻译此查询:

SELECT *
FROM `reunion` , lieu
WHERE reunion.lieu_reunion = lieu.id_lieu

推动查询:

$c=new Criteria();
$c->addJoin(ReunionPeer::LIEU_REUNION,LieuPeer::ID_LIEU, Criteria::LEFT_JOIN);
$this->reunions = ReunionPeer::doSelect($c);

但在我的模板中,当我制作print_r($ reunions)时,字段“ville”(来自表'lieu')不存在。

为什么??

2 个答案:

答案 0 :(得分:1)

首先,您的推进查询将转换为:

SELECT * FROM `reunion` LEFT JOIN lieu ON (reunion.lieu_reunion = lieu.id_lieu);

然后我可以建议:

$c=new Criteria();
$c->clearSelectColumns();
ReunionPeer::addSelectColumns($c);
LieuPeer::addSelectColumns($c);

$c->addJoin(ReunionPeer::LIEU_REUNION,LieuPeer::ID_LIEU, Criteria::LEFT_JOIN);
$this->reunions = ReunionPeer::doSelect($c);

答案 1 :(得分:1)

如果您在数据库模式中声明了此外键,Propel将为您创建额外的函数,以便在一个查询中执行相关表和对象的连接和水合:

$this->reunions = ReunionPeer::doSelectJoinLieu(new Criteria());