Doctrine 2 QueryBuilder添加多个select元素/参数?

时间:2012-11-30 13:06:22

标签: mysql doctrine-orm

我仍在努力使用Doctrine QueryBuilder,因为当我想在select表达式中添加另一个元素时,我认为它无法正常工作。

在这两种情况下,doctrine $ queryBuilder-> getQuery() - > getResults()返回一个数组,其中实体表示为字符串而不是对象:

情况1:

$queryBuilder = $this->em->createQueryBuilder();
$queryBuilder->select("e, 99 as number");

它返回

array(4) {
  [0]=>
     array(2) {
        [0]=> string(30) "Profile_Entity" //notice this is a string but it should be  an object instance 
        ["number"]=> string(2) "99"
     }
  ...
...

如果我要写

$queryBuilder = $this->em->createQueryBuilder();
$queryBuilder->select("e");
$queryBuilder->select("99 as number");

它将返回与情况1相同的东西

下面是它通常应该如何(这里只是select表达式中的一个元素)

array(4) {
  [0]=> object(stdClass)#935 (39) {
    ["__CLASS__"]=> string(30) "Profile_Entity"
    ["id"]=> int(46)
    ["headline"]=> string(7) "asdasd
    ...
  ...
...

1 个答案:

答案 0 :(得分:6)

我正在努力解决类似的问题。

我找到的答案相对简单..

$queryBuilder -> select('table.column1 alias1, table.column2 alias2');

您可以使用逗号分隔,并使用列后面的空格来放置列的别名。

编辑:

您不能将对象与值混合。你只能做其中一个:

$qb -> select('tableAlias1', 'tableAlias2')
$qb -> from('table1','tableAlias1')
$qb -> leftJoin('table2','tableAlias2');

OR

$qb -> select('tableAlias1.column1', 'tableAlias2.column1')
$qb -> from('table1','tableAlias1')
$qb -> leftJoin('table2','tableAlias2');

如果您决定需要在表格上提取某些列,则必须指定要从每个表中检索的每个列。