Как добавить настраиваемый столбец к моему выбору в конструкторе запросов?

У меня есть функция выбора некоторых столбцов из таблицы с помощью 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 '"'

Как добавить настраиваемый столбец к моему выбору в конструкторе запросов?


person shuba.ivan    schedule 05.09.2016    source источник
comment
paid столбец в любой из сущностей, используемых в построителе запросов?   -  person Tomasz Madeyski    schedule 05.09.2016
comment
Вы уверены, что можете использовать distinct в dql?   -  person Max P.    schedule 05.09.2016


Ответы (2)


Попробуйте изменить это:

        ->addSelect('
         "paid" as type

    ')

с участием:

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

    ')

Я успешно сбрасываю значение в качестве примера

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

Надеюсь на эту помощь

person Matteo    schedule 05.09.2016

Попробуйте вот так:

$qb = $this->createQueryBuilder('e');
$qb->select('e')
   ->addSelect('e.paid as HIDDEN paid')
person Chuck Norris    schedule 05.09.2016