mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
41 lines
1.1 KiB
PHP
41 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Chill\PersonBundle\DataFixtures\Helper;
|
|
|
|
use Chill\PersonBundle\Entity\Person;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
|
|
trait PersonRandomHelper
|
|
{
|
|
private array $randPersons = [];
|
|
private ?int $countPersons = null;
|
|
|
|
protected function getRandomPerson(EntityManagerInterface $em): Person
|
|
{
|
|
$fetchBy = 5;
|
|
if (null === $this->countPersons) {
|
|
$qb = $em->createQueryBuilder();
|
|
$this->countPersons = $qb->select('count(p)')
|
|
->from(Person::class, 'p')
|
|
->getQuery()
|
|
->getSingleScalarResult()
|
|
;
|
|
}
|
|
|
|
if ([] === $this->randPersons) {
|
|
$qb = $em->createQueryBuilder();
|
|
$this->randPersons = $qb
|
|
->select('p')
|
|
->from(Person::class, 'p')
|
|
->getQuery()
|
|
->setFirstResult(\random_int(0, $this->countPersons - $fetchBy))
|
|
->setMaxResults($fetchBy)
|
|
->getResult()
|
|
;
|
|
}
|
|
|
|
return \array_pop($this->randPersons);
|
|
}
|
|
|
|
}
|