1
0
mirror of https://github.com/ToxicCrack/PrintABrick.git synced 2025-05-17 21:00:09 -07:00
2017-04-26 16:30:54 +02:00

66 lines
2.3 KiB
PHP

<?php
namespace AppBundle\Repository\Rebrickable;
use AppBundle\Entity\LDraw\Model;
use AppBundle\Entity\Rebrickable\Inventory;
use AppBundle\Entity\Rebrickable\Inventory_Part;
use AppBundle\Entity\Rebrickable\Part;
use AppBundle\Entity\Rebrickable\Set;
use AppBundle\Entity\Rebrickable\Theme;
use AppBundle\Repository\BaseRepository;
use Doctrine\ORM\Query\Expr\Join;
class SetRepository extends BaseRepository
{
public function findAllByTheme(Theme $theme)
{
$queryBuilder = $this->createQueryBuilder('s')
->join(Theme::class, 'theme', Join::WITH, 's.theme = theme')
->where('theme.id = :id')
->setParameter('id', $theme->getId());
return $queryBuilder->getQuery()->getResult();
}
public function findAllByPartNumber($number)
{
$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')
->where('part.number LIKE :number')
->setParameter('number', $number)
->distinct(true);
return $queryBuilder->getQuery()->getResult();
}
public function findAllByModel(Model $model)
{
$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')
->where('part.model = :model')
->setParameter('model', $model->getNumber())
->distinct(true);
return $queryBuilder->getQuery()->getResult();
}
public function findByQuery($query, $limit = null) {
$queryBuilder = $this->createQueryBuilder('s')
->where('s.name LIKE :name')
->orWhere('s.number LIKE :number')
->setParameter('name', '%'.$query.'%')
->setParameter('number', $query.'%');
if($limit) {
$queryBuilder->setMaxResults($limit);
}
return $queryBuilder->getQuery()->getResult();
}
}