Neleze přistupovat k foreign key v Latte
- connor
- Člen | 15
Zdravím, používám Nette ve verzi 2.0.12 a PHP 5.4.3 + Dibi.
Když píšu v latte templatu makro na vytažení dat z db přes foreign key,
{$comment->user_id->name}
tak skončím s chybou,
Trying to get property of non-object
ale v tutoriálu to takhle funguje.
PostModel:
<?php
class PostModel {
public static function fetchAll() {
return dibi::fetchAll('
SELECT *
FROM [post]
ORDER BY [created]', dibi::DESC
);
}
public static function fetchSingle($id) {
return dibi::fetch('
SELECT *
FROM [post]
WHERE [post_id] = %i', $id
);
}
}
CommentModel:
<?php
class CommentModel {
public static function fetchSingleComments($id) {
return dibi::fetchAll('
SELECT *
FROM [comment]
WHERE [post_id] = %i', $id
);
}
}
HomepagePresenter
<?php
/**
* Homepage presenter.
*/
class HomepagePresenter extends BasePresenter
{
public function renderDefault()
{
$this->template->posts = PostModel::fetchAll();
}
public function renderSingle($id = 0) {
$this->template->post = PostModel::fetchSingle($id);
$this->template->comments = CommentModel::fetchSingleComments($id);
}
}
Single.latte
{block content}
<div id="posts">
<div class="post">
<h3>{$post['title']}</h3>
<small>Přidáno {$post['created']|date}</small>
<p>{$post['text']}</p>
</div>
</div><br>
<div id="comments">
{foreach $comments as $comment}
<h1>{$comment->user_id->name}</h1><br>
{$comment->text}
{/foreach}
</div>
Může mi prosím někdo poradit, kde mám chybu a poradit řešení? Děkuji.
- jiri.pudil
- Nette Blogger | 1035
makro na vytažení dat z db přes foreign key
To není makro na vytažení dat. To je makro na prostý výpis dat. To, že můžeš tímhle způsobem přistupovat k navazujícím datům z cizích tabulek, je fíčura Nette\Database. Jelikož nepoužíváš Nette\Database, nýbrž Dibi, které (jakožto nízkoúrovňová vrstva) nic takového neřeší, musíš si tuhle funkcionalitu zajistit sám. Nebo se poohlédnout třeba po Lean Mapperu.
RSS tématu
Téma zavřeno