mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
Add new methods to RegroupmentRepository and fix association
Regroupment/Center
This commit is contained in:
parent
77f8cf0e1a
commit
73b95732db
6
.changes/unreleased/DX-20230607-130344.yaml
Normal file
6
.changes/unreleased/DX-20230607-130344.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
kind: DX
|
||||||
|
body: Add methods to RegroupmentRepository and fullfill Center / Regroupment Doctrine
|
||||||
|
mapping
|
||||||
|
time: 2023-06-07T13:03:44.177864269+02:00
|
||||||
|
custom:
|
||||||
|
Issue: ""
|
@ -48,12 +48,19 @@ class Center implements HasCenterInterface
|
|||||||
*/
|
*/
|
||||||
private string $name = '';
|
private string $name = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var Collection<Regroupment>
|
||||||
|
* @ORM\ManyToMany(targetEntity=Regroupment::class, mappedBy="centers")
|
||||||
|
*/
|
||||||
|
private Collection $regroupments;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Center constructor.
|
* Center constructor.
|
||||||
*/
|
*/
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
$this->groupCenters = new \Doctrine\Common\Collections\ArrayCollection();
|
$this->groupCenters = new ArrayCollection();
|
||||||
|
$this->regroupments = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -106,6 +113,14 @@ class Center implements HasCenterInterface
|
|||||||
return $this->name;
|
return $this->name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Collection<Regroupment>
|
||||||
|
*/
|
||||||
|
public function getRegroupments(): Collection
|
||||||
|
{
|
||||||
|
return $this->regroupments;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param $name
|
* @param $name
|
||||||
*
|
*
|
||||||
|
@ -22,11 +22,12 @@ use Doctrine\ORM\Mapping as ORM;
|
|||||||
class Regroupment
|
class Regroupment
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @var Center
|
|
||||||
* @ORM\ManyToMany(
|
* @ORM\ManyToMany(
|
||||||
* targetEntity=Center::class
|
* targetEntity=Center::class,
|
||||||
|
* inversedBy="regroupments"
|
||||||
* )
|
* )
|
||||||
* @ORM\Id
|
* @ORM\Id
|
||||||
|
* @var Collection<Center>
|
||||||
*/
|
*/
|
||||||
private Collection $centers;
|
private Collection $centers;
|
||||||
|
|
||||||
@ -52,6 +53,26 @@ class Regroupment
|
|||||||
$this->centers = new ArrayCollection();
|
$this->centers = new ArrayCollection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function addCenter(Center $center): self
|
||||||
|
{
|
||||||
|
if (!$this->centers->contains($center)) {
|
||||||
|
$this->centers->add($center);
|
||||||
|
$center->getRegroupments()->add($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function removeCenter(Center $center): self
|
||||||
|
{
|
||||||
|
if ($this->centers->contains($center)) {
|
||||||
|
$this->centers->removeElement($center);
|
||||||
|
$center->getRegroupments()->removeElement($this);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function getCenters(): Collection
|
public function getCenters(): Collection
|
||||||
{
|
{
|
||||||
return $this->centers;
|
return $this->centers;
|
||||||
|
@ -31,7 +31,7 @@ class RegroupmentType extends AbstractType
|
|||||||
->add('centers', EntityType::class, [
|
->add('centers', EntityType::class, [
|
||||||
'class' => Center::class,
|
'class' => Center::class,
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
'attr' => ['class' => 'select2'],
|
'expanded' => true,
|
||||||
])
|
])
|
||||||
->add('isActive', CheckboxType::class, [
|
->add('isActive', CheckboxType::class, [
|
||||||
'label' => 'Actif ?',
|
'label' => 'Actif ?',
|
||||||
|
@ -14,6 +14,8 @@ namespace Chill\MainBundle\Repository;
|
|||||||
use Chill\MainBundle\Entity\Regroupment;
|
use Chill\MainBundle\Entity\Regroupment;
|
||||||
use Doctrine\ORM\EntityManagerInterface;
|
use Doctrine\ORM\EntityManagerInterface;
|
||||||
use Doctrine\ORM\EntityRepository;
|
use Doctrine\ORM\EntityRepository;
|
||||||
|
use Doctrine\ORM\NonUniqueResultException;
|
||||||
|
use Doctrine\ORM\NoResultException;
|
||||||
use Doctrine\Persistence\ObjectRepository;
|
use Doctrine\Persistence\ObjectRepository;
|
||||||
|
|
||||||
final class RegroupmentRepository implements ObjectRepository
|
final class RegroupmentRepository implements ObjectRepository
|
||||||
@ -59,6 +61,30 @@ final class RegroupmentRepository implements ObjectRepository
|
|||||||
return $this->repository->findOneBy($criteria, $orderBy);
|
return $this->repository->findOneBy($criteria, $orderBy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @throws NonUniqueResultException
|
||||||
|
* @throws NoResultException
|
||||||
|
*/
|
||||||
|
public function findOneByName(string $name): ?Regroupment
|
||||||
|
{
|
||||||
|
return $this->repository->createQueryBuilder('r')
|
||||||
|
->where('LOWER(r.name) = LOWER(:searched)')
|
||||||
|
->setParameter('searched', $name)
|
||||||
|
->getQuery()
|
||||||
|
->getSingleResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<Regroupment>
|
||||||
|
*/
|
||||||
|
public function findRegroupmentAssociatedToAnyCenter(): array
|
||||||
|
{
|
||||||
|
return $this->repository->createQueryBuilder('r')
|
||||||
|
->where('SIZE(r.centers) = 0')
|
||||||
|
->getQuery()
|
||||||
|
->getResult();
|
||||||
|
}
|
||||||
|
|
||||||
public function getClassName()
|
public function getClassName()
|
||||||
{
|
{
|
||||||
return Regroupment::class;
|
return Regroupment::class;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user