我是新来的Doctrine,但有点熟悉SQL。我有一个非常简单的用户和挑战模式。每个挑战都有一个“挑战者ID”和一个“对手ID”,它们是外键进入用户表。我想打印所有挑战的列表,输出是用户表中的名称。这是我的学说查询;只有返回一行的原则查询?
$q = Doctrine_Query::create()
->select('u1.name challenger, u2.name opponent')
->from('Challenge c')
->leftJoin('c.Challenger u1')
->leftJoin('c.Opponent u2');
问题是这只返回一行。我用getSqlQuery()命令来查看生成的SQL这最终是:
SELECT u.name AS u__0, u2.name AS u2__1 FROM challenge c
LEFT JOIN user u ON c.challenger_id = u.id
LEFT JOIN user u2 ON c.opponent_id = u2.id
预期当第三方SQL客户端运行此查询检索所有行。任何想法如何从Doctrine获得所有行?我使用的是$q->execute()
,我知道它应该适用于多行。
谢谢。
尝试$ q-> count()并查看它得到的行数。另外,使用 _dev.php来访问查询。运行后,单击数据库并查看它实际正在运行的查询。我不确定这与getSqlQuery()会返回什么不同。 –
gregghz
2010-10-04 00:41:33
谢谢。 $ q-> count()暴露了查询返回了正确数量的结果,并且我需要阅读正确使用DoctrineCollection对象。这超出了我的问题的范围,所以我会将其关闭。 – LVB 2010-10-04 01:02:49
太棒了,欢迎您将我的评论标记为“很棒”的评论;) – gregghz 2010-10-04 02:28:51