for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace Xsolve\Associate\Loader;
use Xsolve\Associate\Metadata\AssociationMetadataWrapper;
class DoctrineOrmNonProxiedAssociationQueryExecutor
{
/**
* @param array $entities
* @param AssociationMetadataWrapper $associationMetadataWrapper
*/
public function execute(
array $entities,
AssociationMetadataWrapper $associationMetadataWrapper
) {
$sourceClassMetadataWrapper = $associationMetadataWrapper->getSourceClassMetadataWrapper();
$queryBuilder = $sourceClassMetadataWrapper->createQueryBuilder('s');
$queryBuilder
->select(
sprintf('PARTIAL s.{%s}', $sourceClassMetadataWrapper->getIdentifierFieldName()),
't'
)
->leftJoin(
sprintf('s.%s', $associationMetadataWrapper->getName()),
->andWhere(
$queryBuilder->expr()->in(
's',
$sourceClassMetadataWrapper->getIdentifierValueForMultiple($entities)
->getQuery()
->execute();
}