2014-06-10 50 views
0

我遇到問題,正確設置了我的Doctrine請求。我有兩個表(PROPRIETE和PHOTO),一個PROPRIETE可以有很多PHOTOSymfony2 - 學說 - 加入2個表格

因此,我想做一個SELECT將返回一個PROPRIETE數組,其中包含它自己的PHOTO數組(不是肯定我是否清楚,雖然...)

這是我的Popriete類是什麼樣子

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; 

然後是圖片類

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; 

最後,我的原則要求(即成功返回Propriete的名單,但對他們的相片沒有)

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(); 
    } 

我已經與leftJoin試過,但似乎我不知道如何使用東西... 謝謝你們的幫助

+2

如果調用方法'getPhoto()'任何返回'PROPRIETE'值的,你明白了'PHOTO'陣列? –

回答

0

我在你的代碼中混合了不同的概念。使用Doctrine你應該忘記試圖通過查詢獲取多個數組。

您只需要在任何propriete對象上調用getPhoto()方法。

所以,你可以使用類似代碼:

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