1
0
mirror of https://github.com/ToxicCrack/PrintABrick.git synced 2025-05-29 10:10:25 -07:00

Improve Rebrickable repositories

This commit is contained in:
David Hübner 2017-04-11 17:33:18 +02:00
parent 23acea2a18
commit 2dcde6c742
3 changed files with 23 additions and 32 deletions

View File

@ -14,24 +14,14 @@ class Inventory_PartRepository extends BaseRepository
{
$queryBuilder = $this->createQueryBuilder('inventory_part');
$version = $this->getEntityManager()->getRepository(Inventory::class)->createQueryBuilder('inventory')
->select('MAX(inventory.version)')
->groupBy('inventory.set')
->where('inventory.set = :setNumber')
->setParameter('setNumber',$number)
->getQuery()->getResult();
$inventory = $this->getEntityManager()->getRepository(Inventory::class)->findNewestInventoryBySetNumber($number);
$queryBuilder
->join(Inventory::class, 'inventory', JOIN::WITH, 'inventory_part.inventory = inventory.id')
->where('inventory.set = :number')
->setParameter('number', $number)
->join(Inventory::class, 'inventory', JOIN::WITH, 'inventory_part.inventory = :inventory')
->setParameter('inventory', $inventory->getId())
->andWhere('inventory_part.spare = FALSE')
->andWhere('inventory.version = :version')
->setParameter('version',$version)
->distinct(true);
return $queryBuilder->getQuery()->getResult();
}
@ -39,22 +29,12 @@ class Inventory_PartRepository extends BaseRepository
{
$queryBuilder = $this->createQueryBuilder('inventory_part');
$version = $this->getEntityManager()->getRepository(Inventory::class)->createQueryBuilder('inventory')
->select('MAX(inventory.version)')
->groupBy('inventory.set')
->where('inventory.set = :setNumber')
->setParameter('setNumber',$number)
->getQuery()->getResult();
$inventory = $this->getEntityManager()->getRepository(Inventory::class)->findNewestInventoryBySetNumber($number);
$queryBuilder
->join(Inventory::class, 'inventory', JOIN::WITH, 'inventory_part.inventory = inventory.id')
->where('inventory.set = :number')
->setParameter('number', $number)
->join(Inventory::class, 'inventory', JOIN::WITH, 'inventory_part.inventory = :inventory')
->setParameter('inventory', $inventory->getId())
->andWhere('inventory_part.spare = TRUE')
->andWhere('inventory.version = 1')
->andWhere('inventory.version = :version')
->setParameter('version',$version)
->distinct(true);
return $queryBuilder->getQuery()->getResult();

View File

@ -10,4 +10,18 @@ use Doctrine\ORM\Query\Expr\Join;
class Inventory_SetRepository extends BaseRepository
{
public function findAllBySetNumber($number) {
$inventory = $this->getEntityManager()->getRepository(Inventory::class)->findNewestInventoryBySetNumber($number);
if($inventory) {
$queryBuilder = $this->createQueryBuilder('inventory_set')
->where('inventory_set.inventory = :inventory')
->setParameter('inventory',$inventory->getId());
return $queryBuilder->getQuery()->getResult();
}
return null;
}
}

View File

@ -7,6 +7,7 @@ use AppBundle\Entity\Rebrickable\Inventory;
use AppBundle\Entity\Rebrickable\Inventory_Part;
use AppBundle\Entity\Rebrickable\Inventory_Set;
use AppBundle\Entity\Rebrickable\Part;
use AppBundle\Entity\Rebrickable\Set;
use AppBundle\Repository\BaseRepository;
use Doctrine\ORM\Query\Expr\Join;
@ -14,9 +15,7 @@ class SetRepository extends BaseRepository
{
public function findAllByPartNumber($number)
{
$queryBuilder = $this->createQueryBuilder('s');
$queryBuilder
$queryBuilder = $this->createQueryBuilder('s')
->join(Inventory::class, 'inventory', JOIN::WITH, 'inventory.set = s.number')
->join(Inventory_Part::class, 'inventory_part', JOIN::WITH, 'inventory.id = inventory_part.inventory')
->join(Part::class, 'part', Join::WITH, 'inventory_part.part = part.number')
@ -29,9 +28,7 @@ class SetRepository extends BaseRepository
public function findAllByModel(Model $model)
{
$queryBuilder = $this->createQueryBuilder('s');
$queryBuilder
$queryBuilder = $this->createQueryBuilder('s')
->join(Inventory::class, 'inventory', JOIN::WITH, 'inventory.set = s.number')
->join(Inventory_Part::class, 'inventory_part', JOIN::WITH, 'inventory.id = inventory_part.inventory')
->join(Part::class, 'part', Join::WITH, 'inventory_part.part = part.number')