Symfony2从具有OneToMany关系

时间:2015-12-03 20:36:01

标签: symfony doctrine

我有两个实体:AdAdPhoto。他们有关系:OneToMany(许多AdPhoto到一个广告)。 在坚持之后,我尝试通过方法AdPhotoAd获取Ad::getPhoto(),但我获得PersistentCollection课程,我不知道该怎么做。

帮助我了解如何将所有相关的AdPhoto广告到广告。

实体广告:

namespace AdBundle\Entity;

use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;

/**
 * Ad
 *
 * @ORM\Table(name="Ad")
 * @ORM\Entity
 */
class Ad
{
...
    /**
     * @ORM\OneToMany(targetEntity="AdBundle\Entity\AdPhoto", mappedBy="id")
     */
    private $photo;
...
}

实体AdPhoto:

namespace AdBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\File\UploadedFile;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * AdPhoto
 *
 * @ORM\Table(name="AdPhoto")
 * @ORM\Entity
 */
class AdPhoto
{
    ...    
    /**
     * @ORM\ManyToOne(targetEntity="AdBundle\Entity\Ad", inversedBy="photo")
     * @ORM\JoinColumn(name="ad", referencedColumnName="id")
     */
    private $ad;
...
}

在控制器中:

$ad = $this->getDoctrine()->getRepository('AdBundle:Ad')
            ->findOneBy(array(
                'id' => $id
            ));

        var_dump($ad->getPhoto());

        return $this->render('AdBundle:Default:view.html.twig', array(
            'ad' => $ad
        ));

1 个答案:

答案 0 :(得分:1)

您可以通过常规数组循环遍历数组集合。如果你想在PHP代码中使用它作为数组,你可以使用

$photos = $ad->getPhotos()->toArray();

由于添加可以有很多照片,最好使用$ photos而不是照片。