我在正确设置我的教义请求时遇到问题。
我有两个表(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;


然后是照相课

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,但是似乎我不知道如何使用这些东西...
谢谢大家帮助

最佳答案

我想您在代码中混用了不同的概念。使用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`
}

关于mysql - Symfony2-主义-联接2张 table ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24141089/

10-13 02:03