我有两个实体:Ad
和AdPhoto
。他们有关系:OneToMany(许多AdPhoto到一个广告)。
在坚持之后,我尝试通过方法AdPhoto
从Ad
获取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
));
答案 0 :(得分:1)
您可以通过常规数组循环遍历数组集合。如果你想在PHP代码中使用它作为数组,你可以使用
$photos = $ad->getPhotos()->toArray();
由于添加可以有很多照片,最好使用$ photos而不是照片。