2017-09-01 246 views
0

相关的我以前的帖子:Symfony2的一对多关系

Symfony2 OneToMany relation

我想这个功能添加到我的infoAction();谁列出所有的广告。

public function infoAction() 
{ 
    $listAdverts = $this->getDoctrine() 
     ->getManager() 
     ->getRepository('SocietyPerfclientBundle:Advert') 
     ->getAdverts() 
    ; 

    return $this->render('SocietyPerfclientBundle:Default:info.html.twig', array(
     'listAdverts' => $listAdverts, 
    )); 
} 

什么,我要在这里做我认为访问:

{% for reader in advert.readers %} <i>Seen by : {{ reader.username }}</i> {% endfor %}

+0

这是您的错误?问题?问候 – Albeis

+0

我不知道该怎么办..请看我的链接,请:) :) –

+0

您是否已经在存储库上实现了getAdverts方法?您可以使用finBy(advertId),或者如果您希望所有广告都使用findAll()。它会给你一个数组。 并在你的循环中使用listAdverts.readers。 Registers – Albeis

回答

0

你给你的模板$ listAdvert其包含您的广告数据。 为了在视图中显示它,你必须不能直接使用它的名字你的实体

{% for reader in listAdverts.readers %} 
    <i>Seen by : {{ reader.username }}</i> 
{% endfor %} 

定影控制器

$listAdverts = $this->getDoctrine() 
     ->getManager() 
     ->getRepository('SocietyPerfclientBundle:Advert') 
     ->findAll() 
    ; 
+0

小枝错误:SocietyPerfclientBundle中不存在键“0,1,2,3,4,5,6”的数组的关键“读者”:默认:info.html.twig –

+0

您不发送回weel实体。修复这个在你的控制器 – slig36

1

首先的,关于你的第一个链接(该链接,从现在开始你应该在一个帖子中发布所有问题/问题,而不是创建多个帖子,如果你有东西要添加/删除,你可以编辑你的帖子),但你没有正确设置关系:

在课堂上Advert y你缺少一些基本的方法。为此,请运行

$ php app/console doctrine:generate:entities SocietyPerfclientBundle:Advert 

让教条为您生成缺少的方法。 AdvertReader实体一样。

最后,您必须在Advert实体中具有$readers字段的实例。喜欢的东西:

$this->readers = new \Doctrine\Common\Collections\ArrayCollection(); 

而且还有下列方法:addReader(AdvertReader $reader)removeReader(AdvertReader $reader)getReaders()

AdvertReader实体中,您只需要有setAdvert(Advert $advers)getAdvert()

试一试,让我们知道如果工作与否。