From dd3bb0df17409e6825c23a6d856918bbee6ed55a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20H=C3=BCbner?= Date: Thu, 13 Apr 2017 18:57:25 +0200 Subject: [PATCH] Add related models list --- src/AppBundle/Controller/ModelController.php | 3 +++ .../Repository/LDraw/ModelRepository.php | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/AppBundle/Controller/ModelController.php b/src/AppBundle/Controller/ModelController.php index 3a41fbb..92ce1d3 100644 --- a/src/AppBundle/Controller/ModelController.php +++ b/src/AppBundle/Controller/ModelController.php @@ -67,10 +67,13 @@ class ModelController extends Controller $rbParts = $model != null ? $em->getRepository(Part::class)->findAllByModel($model) : null; $sets = $model != null ? $em->getRepository(Set::class)->findAllByModel($model) : null; + $related = $em->getRepository(Model::class)->findAllRelatedModels($model->getNumber()); + return $this->render('model/detail.html.twig', [ 'model' => $model, 'rbParts' => $rbParts, 'sets' => $sets, + 'related' => $related ]); } catch (\Exception $e) { $this->addFlash('error', $e->getMessage()); diff --git a/src/AppBundle/Repository/LDraw/ModelRepository.php b/src/AppBundle/Repository/LDraw/ModelRepository.php index 7eeae5e..433e8d1 100644 --- a/src/AppBundle/Repository/LDraw/ModelRepository.php +++ b/src/AppBundle/Repository/LDraw/ModelRepository.php @@ -3,6 +3,8 @@ namespace AppBundle\Repository\LDraw; use AppBundle\Entity\LDraw\Category; +use AppBundle\Entity\LDraw\Model; +use AppBundle\Entity\LDraw\Subpart; use AppBundle\Entity\Rebrickable\Set; use AppBundle\Entity\Rebrickable\Part; use AppBundle\Entity\LDraw\Alias; @@ -55,4 +57,21 @@ class ModelRepository extends BaseRepository return $queryBuilder->getQuery()->getResult(); } + + public function findAllRelatedModels($number) + { + $queryBuilder = $this->createQueryBuilder('model'); + + $queryBuilder + ->select('related') + ->join(Subpart::class, 'subpart', JOIN::WITH, 'model.number = subpart.subpart') + ->join(Subpart::class, 'parent', JOIN::WITH, 'subpart.parent = parent.parent') + ->join(Model::class, 'related', JOIN::WITH, 'related.number = parent.subpart') + ->where('model.number = :number') + ->setParameter('number', $number) + ->andWhere('related.number != :number') + ->distinct(true); + + return $queryBuilder->getQuery()->getResult(); + } }