Doctrine 2 | Chyba při vypisování jiné entity
- Jan Blažek
- Člen | 36
Ahojte, předem se omlouvám za velmi rozsáhlý text, ale snažím se můj
problém co nejblíže popsat.
Mám vytvořené 2 entity. User a Article. Tyto entity mám spojené
následovně
User entity:
/**
* Namapovaná vazba uživatele 1:N na tabulku článků.
* @ORM\OneToMany(targetEntity="Article", mappedBy="user")
*/
public $articles;
/**
* Přidá nový článek do seznamu daného uživatele.
* @param Article $article nový článek
*/
public function addArticle(Article $article)
{
$this->articles[] = $article;
$article->user = $this;
}
ArticleEntity
/**
* Vazba článku N:1 na uživatele.
* @ORM\ManyToOne(targetEntity="User", inversedBy="articles")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
public $user;
/**
* Přidá nový komentář k danému článku.
* @param ArticleComment $comment nový komentář
*/
public function addComment(ArticleComment $comment)
{
$this->comments[] = $comment;
$comment->article = $this;
}
Samozřejmě v konstruktoru u obou atributům přiřazuji
ArrayCollection.
Pak v presenteru předávám do šablony:
$this->template->articles = $this->userEntity->articles;
Problém je v tom, že se mi nikdy neukáže článek i přesto, že jsem
nějaké z daného účtu vytvořil.
Když se podívám na dotaz, který Doctrine 2 vygeneroval, tak se z databáze
netahají articles.
Nejsem si jistý, zda za to může následující chyba, která mi občas
vybíhá při startu aplikace:
User Deprecated
Nette\DI\Statement::setEntity is deprecated, change Statement object itself.
Bohužel moc nevím, co s tím dělat.
Předem děkuji za vaše rady.
- David Matějka
- Moderator | 6445
nejdriv k te chybe: nesouvisi s tim, ale aktualizuj kdyby balicky. filip uz myslim vydal stabilni verze, ktere to opravuji
a k tvemu problemu: jak potom pracujes s temi clanky v sablone?
- Jan Blažek
- Člen | 36
Nikdy mi to neprojde podmínkou if (count($articles) > 0)
{if count($articles) > 0}
<table class="myArticlesTable">
{foreach $articles as $article}
{capture $releasedText}
{if $article->released}
{_tr.yes}
{else}
{_tr.no}
{/if}
{/capture}
<tr>
<td>{$article->title}</td>
<td>{$releasedText}</td>
<td><a n:href="Article:detail $article->id">{_ar.myArticles.view}</a></td>
<td><a n:href="Article:edit $article->id">{_ar.edit}</a></td>
</tr>
{/foreach}
</table>
{else}
Nemáš žádné články
{/if}
- Jan Blažek
- Člen | 36
cache :D to bylo ono. Díky moc. Je to určitě hodně velká zkušenost. :D smazat cache