我在设置正确的Doctrine请求时遇到问题。 我有两张桌子(PROPRIETE和PHOTO),一张PROPRIETE可以有很多PHOTO
因此,我想制作一个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;
然后是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;
最后,我的Doctrine请求(成功返回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,但似乎我不知道如何使用那些东西...... 谢谢你的帮助
答案 0 :(得分:0)
我认为你在代码中混合了不同的概念。使用Doctrine
,您应该忘记尝试使用查询来获取多个数组。
您只需要在任何getPhoto()
对象上调用propriete
方法。
因此,您可以使用类似于以下的代码:
$props = $this->getProprietesByCriteria($ville, $rooms);
foreach($props as $prop)
{
$prop->getPhoto(); // <--will return an array of the `PHOTO` related to this `PROPIETE`
}