2015-12-03 4 views
1

У меня есть два объекта: Ad и AdPhoto. У них есть отношение: OneToMany (много AdPhoto к одному объявлению). После этого я попытался получить AdPhoto от Ad по методу Ad::getPhoto(), но я получаю класс PersistentCollection, и я не знаю, что с ним делать.Symfony2 выборка данных из объекта с отношением OneToMany

Помогите мне понять, как я могу получить все связанные с AdPhoto объявления.

Entity объявления:

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; 
... 
} 

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

И так как добавить может иметь много фотографий, было бы лучше использовать $ фото вместо $ фото.

+0

Большое спасибо, я должен попробовать его по утрам. Переименуйте $ photo to $ photos это хорошее предложение. Благодаря! – trauma

+0

Большое спасибо, это работает =) – trauma

Смежные вопросы