首先,感谢您的帮助。
这是我的实体:
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 = $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);
}
}然后我想将结果添加到表单中,并使用曝光者的新沙龙处理请求。
感谢你的帮助
发布于 2015-10-07 23:46:33
在您的类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;在实体exposant中创建方法getSalons()后:
public function getSalons()
{
return $this->salons;
}要恢复暴露的沙龙,请执行以下操作:
$my_salons = $exposant->getSalons();https://stackoverflow.com/questions/32969174
复制相似问题