2015-10-06 4 views
0

сначала спасибо за вашу помощь.Сбор доктрины resquest & collection form

это мои объекты:

class Salon { 
/** 
* @ORM\ManyToMany(targetEntity="Screenfony\DemoBundle\Entity\Exposant", cascade={"persist"}) 
*/ 
private $exposants; 

второй один:

class Exposant{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

Я хотел бы создать форму для Exposant, который сможет увидеть коллекцию своего салона (добавлять и удалять somes).

Прежде всего, я застреваю по просьбе, чтобы получить все салоны экспонирования. я попробовать это, но не получилось:

$exposant = $this ->getDoctrine() 
         ->getManager() 
         ->getRepository('ScreenfonyDemoBundle:Exposant') 
         ->findOneBy(array('user' => $id)); 

    $exposant_id = $exposant->getId(); 

    $salons = $this ->getDoctrine() 
        ->getManager() 
        ->getRepository('ScreenfonyDemoBundle:Salon'); 

    $my_salons = new \Doctrine\Common\Collections\ArrayCollection(); 

    foreach ($salons as $salon) { 
     if($salon->getExposants()->contains($exposant_id)){ 
      $mes_salons->add($salon); 
     } 
    } 

, а затем я хотел бы добавить результат в виде и обработать запрос с новыми салонов в exposant.

благодаря вашей помощи

ответ

0

В вашем классе exposant, ему не хватает отношения многие ко многим, что создает промежуточную таблицу exposant_salon:

class Exposant{ 
/** 
* @var integer 
* 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\ManyToMany(targetEntity="Screenfony\DemoBundle\Entity\salon", inversedBy="exposants", cascade={"persist"}) 
* @ORM\JoinTable(name="exposant_salon", 
*  joinColumns={@ORM\JoinColumn(name="id_exposant", referencedColumnName="id")}, 
*  inverseJoinColumns={@ORM\JoinColumn(name="id_salon", referencedColumnName="id")} 
*) 
*/ 
private $salons; 

После создания метода getSalons() в сущности exposant:

public function getSalons() 
{ 
    return $this->salons; 
} 

, чтобы восстановить exposant салоны сделать следующим образом:

$my_salons = $exposant->getSalons(); 
+0

Благодаря это работает, сейчас в моей FormBuilder я имел, что -> Add ('салоны', 'сбор', массив ( \t \t 'типа' => 'Коллекция', \t \t 'allow_add' => true, \t \t 'allow_delete' => true, \t \t)). и я не могу добавить какой-либо салон в свою форму – Sky

+0

в вашем построителе форм вам нужен тип объекта: -> добавить ('салоны', 'сущность', массив ( 'class' => "Screenfony \ DemoBundle \ Entity \ salon ", 'property' => 'nom', 'multiple' => true, 'extended' => false, 'required' => true )) – Snoozer

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

  • Нет связанных вопросов^_^