[RESOLU] Symfony relation Many To Many

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Symfony relation Many To Many

Re: Symfony relation Many To Many

par labyelo » 18 nov. 2015, 09:23

Salut,
Merci.
Je me suis laissé perturber par cette table intermédiaire :(

Re: Symfony relation Many To Many

par Genova » 17 nov. 2015, 23:59

Salut,

Normalement tu peux facilement faire ça comme ça :
$results = $em->createQuery('
   SELECT li
   FROM LivreBundle:Livre li
   JOIN li.langue la
   WHERE la.name = :langue
')
   ->setParameter('langue', 'français')
   ->getResult();

Symfony relation Many To Many

par labyelo » 17 nov. 2015, 21:22

Bonjour,
L'idée est de créé une bibliothèque de livre un livre peux avoir plusieurs langues et plusieurs auteurs, donc j'ai créer trois entity et deux relations.
J'ai un entity Livre qui possède deux relations ManyToMany

Code : Tout sélectionner

** * Livre * @ORM\Table() * @ORM\Entity(repositoryClass="LivreBundle\Entity\LivreRepository") */ class Livre { /** * @ORM\ManyToMany(targetEntity="LivreBundle\Entity\Langue") * */ private $langue; /** * @ORM\ManyToMany(targetEntity="Gilnet\LivreBundle\Entity\Auteur", cascade={"persist"}) */ private $auteur; /** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id * @ORM\GeneratedValue(strategy="AUTO") */ private $id; /** * @var string * @ORM\Column(name="titre", type="string", length=150) */ private $titre; /** * @var string * @ORM\Column(name="description", type="text") */ private $description; /** * Livre constructor. */ public function __construct() { //$this->date = new \Datetime(); $this->auteur = new ArrayCollection(); } /** * Get id * * @return integer */ public function getId() { return $this->id; } /** * Set titre * * @param string $titre * @return Livre */ public function setTitre($titre) { $this->titre = $titre; return $this; } /** * Get titre * * @return string */ public function getTitre() { return $this->titre; } /** * Set langue * * @param string $langue * @return Livre */ public function setLangue($langue) { $this->langue = $langue; return $this; } /** * Get langue * * @return string */ public function getLangue() { return $this->langue; } /** * Set auteur * * @param string $auteur * @return Livre */ public function setAuteur(Auteur $auteur) { $this->auteur = $auteur; return $this; } /** * Get auteur * * @return string */ public function getAuteur() { return $this->auteur; } /** * @param Auteur $auteur * @return $this */ public function addCategory(Auteur $auteur) { $this->auteur[] = $auteur; return $this; } /** * @param Auteur $auteur */ public function removeAuteur(Auteur $auteur) { $this->auteur->removeElement($auteur); } /** * Set description * * @param string $description * @return Livre */ public function setDescription($description) { $this->description = $description; return $this; } /** * Get description * * @return string */ public function getDescription() { return $this->description; } }
J'arrive sans soucis a manipuler mes entity par contre je n'arrive pas a faire une recherche sur mon entity Livre car doctrine a créé une table langue_langue qui reprend comprend livre_id et auteur_id, les livres et les langue associer, et comme c'est pas une entity je ne sais vraiment pas comment faire par exemple pour récupérer les livres en français par exemple.

Une piste peut-être ?
d'avance merci