2016-09-05 20 views
1

私は、QueryBuilderを使用してテーブルからいくつかの列を選択する機能を持っています。結果のクエリにカスタム列を追加したいと思います。これは私が持っているものである。このクエリビルダで選択した列にカスタム列を追加するにはどうすればよいですか?

SELECT u.id, "paid" as type FROM users as u WHERE u.deleted_at IS NOT NULL 

よう

/** 
* {@inheritdoc} 
*/ 
public function getPaidOrderAnalytics(
    Agents $agent,  
    ParamFetcher $paramFetcher, 
    $dateFrom, 
    $dateTo 
) 
{ 
    $qb = $this->getEntityManager()->createQueryBuilder(); 
    $qb 
     ->select(' 
      DISTINCT(o.id) as _id, 
      o.createdAt as order_created_at, 
      o.publicCost as public_cost, 
      o.orderStatus as order_status, 
      srv.services as service_name 
     ') 
     ->addSelect(' 
      "paid" as type 

     ') 
     ->from('ArtelProfileBundle:Orders', 'o') 
     ->leftJoin('o.services', 'srv') 
     ->leftJoin('o.leadService', 'ls') 
     ->leftJoin('ls.lead', 'l') 
     ->andWhere('l.agent = :agent') 
     ->setParameter(':agent', $agent) 
     ->orderBy('o.' . $paramFetcher->get('sort_by'), $paramFetcher->get('sort_order')) 
     ->setFirstResult($paramFetcher->get('count') * ($paramFetcher->get('page') - 1)) 
     ->setMaxResults($paramFetcher->get('count')); 

    $query = $qb->getQuery(); 
    $results = $query->getResult(); 

    return $results; 
} 

はエラー

[Syntax Error] line 0, col 270: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got '"' 

がどのようにクエリビルダでの私の選択にカスタム列を追加する必要がありますか?

+0

は、お支払いビルダーで使用されているエンティティのいずれかで「お支払い」ですか? –

+0

dqlで 'distinct'を使うことはできますか? –

答えて

1

この変更してみてください:

 ->addSelect(' 
     "paid" as type 

    ') 

と:私は成功した例として値をダンプ

 ->addSelect(' 
     \'paid\' as type 

    ') 

var_dump($results[0]['type']); 

希望するヘルプ

-1

は次のように試してみてください:

$qb = $this->createQueryBuilder('e'); 
$qb->select('e') 
    ->addSelect('e.paid as HIDDEN paid') 
関連する問題