Call to a member function table() on a non-object
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- TomasHuttner
- Člen | 66
Dobrý de, začínám s nette a zkouším udělat web dne se vypíše prvních pět příspěvků z databaze podle id. Ale pořád mi to háže chybu Call to a member function table() on a non-object
v kodu na řádku 5:
private $database;
public function renderDefault()
{
$this->template->posts = $this->database->table('posts')
->order('id DESC')
->limit(5);
}
Nevíte někdo co s tím?
- Robyer
- Člen | 74
Tu proměnnou $database
máš prázdnou. Musíš si do ní
nechat injectnout tu databázovou službu. Řešilo se to tady už několikrát
v poslední době. Např. https://forum.nette.org/…senterom-atd#…
- TomasHuttner
- Člen | 66
Takhle to vypadá i s constructem kde je obsažená proměnná $database:
private $connection;
public function __construct(Nette\Database\Context $database)
{
$this->connection = $database;
}
private $database;
public function renderDefault()
{
$this->template->posts = $this->database->table('posts')
->order('id DESC')
->limit(5);
}
- Robyer
- Člen | 74
Ano, máš tam jednu $connection a další $database. A do $database jsi nikdy nic nepřiřadil, tak proč očekáváš, že v ní něco je? :-)
Přepiš to takhle:
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
public function renderDefault()
{
$this->template->posts = $this->database->table('posts')
->order('id DESC')
->limit(5);
}