2014-06-10 12 views
0

Je rencontre des problèmes lors de la configuration correcte de ma requête Doctrine. J'ai deux tables (PROPRIETE et PHOTO), une PROPRIETE peut avoir beaucoup PHOTOSymfony2 - Doctrine - Joindre 2 tables

Par conséquent, je voudrais faire un SELECT qui retournera un tableau de PROPRIETE où l'on inclut un tableau de ses propres PHOTO (pas que si je suis clair si ...)

C'est ce que ma classe Popriete ressemble

class Propriete 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="libelle", type="string", length=255) 
    */ 
    private $libelle; 

    /** 
    * @ORM\ManyToOne(targetEntity="VillaPrivee\UserBundle\Entity\User") 
    * @ORM\JoinColumn(onDelete="CASCADE") 
    */ 
    private $proprietaire; 

    /** 
    * @ORM\OneToMany(targetEntity="VillaPrivee\MainBundle\Entity\Photo", mappedBy="propriete") 
    */ 
    private $photo; 

Et puis la classe photo

class Photo 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="path", type="string", length=255) 
    */ 
    private $path; 

    /** 
    * @ORM\ManyToOne(targetEntity="VillaPrivee\MainBundle\Entity\Propriete") 
    * @ORM\JoinColumn(onDelete="CASCADE") 
    */ 
    private $propriete; 

Et enfin, ma demande de doctrine (qui retourne avec succès une liste de Propriete, mais rien sur leurs photos)

public function getProprietesByCriteria($ville, $rooms) { 
     $qb = $this->createQueryBuilder('p'); 
     $qb->where('p.commune = :ville AND p.nbChambres >= :rooms') 
       ->setParameter('ville', $ville) 
       ->setParameter('rooms', $rooms); 
     return $qb->getQuery()->getResult(); 
    } 

J'ai essayé avec un leftJoin, mais il semble que je ne sais pas comment l'utiliser trucs ... Merci les gars pour votre aide

+2

Si vous invoquez la méthode 'Getphoto()' sur l'un des retournés 'valeurs PROPRIETE', vous obtenez le VARIABLES' PHOTO'? –

Répondre

0

Je pense que vous mélangez différents concepts dans votre code. En utilisant Doctrine vous devriez oublier d'essayer d'obtenir plusieurs tableaux avec une requête. Vous n'avez besoin d'appeler la méthode getPhoto() sur aucun objet propriete.

Ainsi, vous pouvez utiliser un code similaire à:

$props = $this->getProprietesByCriteria($ville, $rooms); 
foreach($props as $prop) 
{ 
    $prop->getPhoto(); // <--will return an array of the `PHOTO` related to this `PROPIETE` 
}