function let(MassActionHandlerRegistry $handlerRegistry, ManagerInterface $manager, RequestParameters $requestParams, MassActionParametersParser $parametersParser, DatagridInterface $grid, Acceptor $acceptor, DatasourceInterface $acceptedDatasource, DatasourceInterface $datasource, QueryBuilder $queryBuilder) { $this->beConstructedWith($handlerRegistry, $manager, $requestParams, $parametersParser); $acceptedDatasource->getQueryBuilder()->willReturn($queryBuilder); $grid->getAcceptor()->willReturn($acceptor); $grid->getAcceptedDatasource()->willReturn($acceptedDatasource); $grid->getDatasource()->willReturn($datasource); $manager->getDatagrid('grid')->willReturn($grid); }
function it_applies_a_selector(DatasourceInterface $datasource, DatagridConfiguration $configuration, QueryBuilder $queryBuilder) { $datasource->getQueryBuilder()->willReturn($queryBuilder); $queryBuilder->getRootAlias()->willReturn('p'); $queryBuilder->leftJoin('p.family', 'family')->willReturn($queryBuilder); $queryBuilder->leftJoin('family.translations', 'ft', 'WITH', 'ft.locale = :dataLocale')->willReturn($queryBuilder); $queryBuilder->addSelect('COALESCE(NULLIF(ft.label, \'\'), CONCAT(\'[\', family.code, \']\')) as familyLabel')->shouldBeCalled(); $this->apply($datasource, $configuration); }
/** * Retrieve entity ids, filters, sorters and limits are already in the datasource query builder * * @param DatasourceInterface $datasource * * @return array */ protected function getEntityIds(DatasourceInterface $datasource) { $getIdsQb = clone $datasource->getQueryBuilder(); $rootEntity = current($getIdsQb->getRootEntities()); $rootAlias = $getIdsQb->getRootAlias(); $rootField = $rootAlias . '.id'; $getIdsQb->add('from', new From($rootEntity, $rootAlias, $rootField), false); $getIdsQb->groupBy($rootField); QueryBuilderUtility::removeExtraParameters($getIdsQb); $results = $getIdsQb->getQuery()->getResult(AbstractQuery::HYDRATE_ARRAY); return array_keys($results); }