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
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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);
	}
TomasHuttner
Člen | 66
+
0
-

Je vím sem blbec už sem na to přišel, Děkuju!