Simple utility class for easier use of Doctrine ORM Queries in certain scenarios
Simply run
composer require pkly/query-helper
In your repositories simply return an instance of QueryHelper instead of a full type.
class FooEntityRepository extends \Doctrine\ORM\EntityRepository
{
/**
* @return QueryHelper<FooEntity, int>
*/
public function findByOrder(
Order $order
): QueryHelper {
return new QueryHelper(
$this->createQueryBuilder('entity')
->where('entity.relatedOrder = :relaterOrder')
->setParameter('relaterOrder', $order)
);
}
}Then use it as normal.
// inside of a service, controller, etc.
$helper = $repository->findByOrder($order);
$helper->ids(); // list of ids
$helper->id(); // single id
$helper->value(); // single object
$helper->list(); // list of objects
$helper->reference(); // single reference from Doctrine
$helper->references(); // list of references
$helper->fields(['order']); // single array of fields (one row)
$helper->fieldList(['order']); // list of fields (multiple rows)
$helper->count(); // simple count
$helper->exists(); // boolean existence check
// more advanced use
// load one object with lock from query
$object = $em->getRepository(FooEntity::class)
->findByOrder($order)
->lockMode(LockMode::PESSIMISTIC_WRITE)
->value(); // returns T|nullSure, hit me up with an issue if you wish.