Doctrine查询只返回一行?

LVB*_*LVB 2 doctrine

我是Doctrine的新手,但对SQL有些熟悉.我有一个非常简单的架构,包含用户和挑战.每个Challenge都有一个"challenger id"和一个"opponent id",它们是User表中的外键.我想打印所有挑战的列表,输出是User表中的名称.这是我的Doctrine查询;

$q = Doctrine_Query::create()
        ->select('u1.name challenger, u2.name opponent')
        ->from('Challenge c')
            ->leftJoin('c.Challenger u1')
            ->leftJoin('c.Opponent u2');
Run Code Online (Sandbox Code Playgroud)

问题是这只返回一行.我已经使用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
Run Code Online (Sandbox Code Playgroud)

在第三方SQL客户端中运行时,此查询将按预期检索所有行.知道如何从Doctrine获取所有行吗?我正在使用$q->execute()我理解应该为多行工作.

谢谢.

own*_*ing 5

对我来说,它通过改变水合模式起作用:

$result = $query->execute(array(), Doctrine_Core::HYDRATE_SCALAR);
Run Code Online (Sandbox Code Playgroud)

设置结果集然后返回一个数组而不是对象.