我仍在努力使用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
...
...
...
答案 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');
如果您决定需要在表格上提取某些列,则必须指定要从每个表中检索的每个列。