2017-09-01 432 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()

試一試,讓我們知道如果工作與否。