Programming Language PHP
Namespace Oro\Component\DoctrineUtils\ORM
Class QueryBuilderUtil
Method/Function checkParameter
Total Examples 3
3 code examples of PHP Oro\Component\DoctrineUtils\ORM\QueryBuilderUtil::checkParameter extracted from open source projects
private function getManyToManyQueryBuilder(
ClassMetadata $mainEntityMetadata,
array $mainEntities,
string $fieldName
): QueryBuilder {
$mainEntityClass = $mainEntityMetadata->getName();
$mainEntityIdField = $this->getEntityIdField($mainEntityClass);
$assocMapping = $mainEntityMetadata->getAssociationMapping($fieldName);
$targetEntityClass = $mainEntityMetadata->getAssociationTargetClass($fieldName);
$targetEntityRepository = $this->doctrineHelper->getEntityRepositoryForClass($targetEntityClass);
$qbToMany = $targetEntityRepository->createQueryBuilder('collection_item');
QueryBuilderUtil::checkParameter($mainEntityClass);
QueryBuilderUtil::checkParameter($mainEntityIdField);
$qbToMany
->addSelect('entity.' . $mainEntityIdField)
->innerJoin($mainEntityClass, 'entity', Query\Expr\Join::WITH, $qbToMany->expr()->eq(1, 1))
->innerJoin('entity.' . $fieldName, 'entity_' . $fieldName)
->andWhere($qbToMany->expr()->eq('entity_' . $fieldName, 'collection_item'))
->andWhere($qbToMany->expr()->in('entity', ':entities'));
if (!empty($assocMapping['orderBy'])) {
foreach ($assocMapping['orderBy'] as $sort => $order) {
QueryBuilderUtil::checkParameter($sort);
QueryBuilderUtil::checkParameter($order);
$qbToMany->addOrderBy('collection_item.' . $sort, $order);
}
}
$qbToMany->setParameter(':entities', array_keys($mainEntities));
return $qbToMany;
}
private function getOneToManyQueryBuilder(
ClassMetadata $mainEntityMetadata,
array $mainEntities,
string $fieldName
): QueryBuilder {
$mainEntityClass = $mainEntityMetadata->getName();
$mainEntityIdField = $this->getEntityIdField($mainEntityClass);
$assocMapping = $mainEntityMetadata->getAssociationMapping($fieldName);
$targetEntityClass = $mainEntityMetadata->getAssociationTargetClass($fieldName);
$targetEntityRepository = $this->doctrineHelper->getEntityRepositoryForClass($targetEntityClass);
$qbToMany = $targetEntityRepository->createQueryBuilder('collection_item');
$mappedBy = $mainEntityMetadata->getAssociationMappedByTargetField($fieldName);
QueryBuilderUtil::checkParameter($mappedBy);
QueryBuilderUtil::checkParameter($mainEntityIdField);
$qbToMany
->addSelect('collection_item_' . $mappedBy . '.' . $mainEntityIdField)
->innerJoin('collection_item.' . $mappedBy, 'collection_item_' . $mappedBy)
->andWhere($qbToMany->expr()->in('collection_item_' . $mappedBy, ':entities'));
if (!empty($assocMapping['orderBy'])) {
foreach ($assocMapping['orderBy'] as $sort => $order) {
QueryBuilderUtil::checkParameter($sort);
QueryBuilderUtil::checkParameter($order);
$qbToMany->addOrderBy('collection_item.' . $sort, $order);
}
}
$qbToMany->setParameter(':entities', array_keys($mainEntities));
return $qbToMany;
}
protected function getFieldExpr(QueryBuilder $qb, string $qbFieldName, string $qbParameterName, array $configuration): \Doctrine\ORM\Query\Expr\Base
{
QueryBuilderUtil::checkParameter($qbParameterName);
$fieldExpr = $qb->expr()->eq($qbFieldName, $qbParameterName);
$options = $configuration[Configuration::DISCOVERY_OPTIONS_KEY];
if (!empty($options[Configuration::DISCOVERY_EMPTY_KEY])) {
$fieldExpr = $qb->expr()->orX(
$fieldExpr,
$qb->expr()->eq($qbFieldName, ':emptyValue'),
$qb->expr()->isNull($qbFieldName)
);
$qb->setParameter('emptyValue', '');
}
return $fieldExpr;
}