Kdyby\Doctrine\EntityRepository::createQueryBuilder PHP Метод

createQueryBuilder() публичный Метод

public createQueryBuilder ( string $alias = NULL, string $indexBy = NULL ) : Kdyby\Doctrine\QueryBuilder
$alias string
$indexBy string The index for the from.
Результат Kdyby\Doctrine\QueryBuilder
    public function createQueryBuilder($alias = NULL, $indexBy = NULL)
    {
        $qb = $this->getEntityManager()->createQueryBuilder();
        if ($alias !== NULL) {
            $qb->select($alias)->from($this->getEntityName(), $alias, $indexBy);
        }
        return $qb;
    }

Usage Example

 public function getFreeAddress() : Address
 {
     if ($this->addressRepository->countBy([]) == 0) {
         $this->generateAndPersistNewAddresses(10);
     }
     $this->entityManager->beginTransaction();
     $addressMaxAge = new \DateTime($this->addressLockTime);
     $qb = $this->addressRepository->createQueryBuilder('address');
     $qb->addSelect('count(address) as free')->where('address.lastUsed IS NULL')->orWhere('address.lastUsed < :maxAge')->setParameter('maxAge', $addressMaxAge)->setMaxResults(1);
     /** @var Address $address */
     $result = $qb->getQuery()->getSingleResult();
     $address = $result[0];
     $free = $result['free'];
     $address->useAddress();
     $this->entityManager->flush($address);
     $qb = $this->entityManager->createQueryBuilder();
     $qb->select('COUNT(address) AS total')->from(Address::getClassName(), 'address');
     $total = $qb->getQuery()->getSingleScalarResult();
     $occupied = $total - $free;
     if ($occupied / $total >= $this->occupiedAddressesTreshold) {
         $this->generateAndPersistNewAddresses(round($total * $this->increaseRatio));
     }
     $this->entityManager->commit();
     return $address;
 }
All Usage Examples Of Kdyby\Doctrine\EntityRepository::createQueryBuilder