Bonjour à tous,
Sur mon projet Symfony je souhaite afficher des données rassemblant 3 entités avec des conditions particulières. Les 3 entités sont Country(pays), Category(categorie) et Aircraft(avion). Je souhaite obtenir un résultat ressemblant à ceci :
-
Pays 1 (si des avions lui sont attachés sinon on ne l'affiche pas) => requête simple
- Catégorie 1 (si des avions lui sont attachés sinon on ne l'affiche pas)
- Avion 1 (lié à la catégorie au pays)
- Avion 2 ...
Mon but est de connaitre la facon la plus logique et efficiente de coder ca. J'espère avoir été assez clair :)
Je vous partage le code des 3 entités (uniquement ce qui est nécessaire)
Entité Country :
class Country
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(name="name", type="string", length=255, unique=true)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity=Aircraft::class, mappedBy="country")
*/
private $aircraft;
public function __construct()
{
$this->aircraft = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
/**
* @return Collection|Aircraft[]
*/
public function getAircraft(): Collection
{
return $this->aircraft;
}
}
Entité Categorie :
class AircraftCategory
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\OneToMany(targetEntity=Aircraft::class, mappedBy="category")
*/
private $aircraft;
public function __construct()
{
$this->aircraft = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
/**
* @return Collection|Aircraft[]
*/
public function getAircraft(): Collection
{
return $this->aircraft;
}
}
Entité Aircraft :
class Aircraft
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $name;
/**
* @ORM\ManyToOne(targetEntity=Country::class, inversedBy="aircraft")
* @ORM\JoinColumn(nullable=false)
*/
private $country;
/**
* @ORM\ManyToOne(targetEntity=AircraftCategory::class, inversedBy="aircraft")
* @ORM\JoinColumn(nullable=false)
*/
private $category;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function getCountry(): ?Country
{
return $this->country;
}
public function getCategory(): ?AircraftCategory
{
return $this->category;
}
}
Merci à vous pour vos suggestions.