Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
rastik1585
Člen | 2
+
0
-

Zdravím všetkých
Dlhšiu dobu som s Nette nepracoval naposledy s verziou 2.2 . Teraz používam 2.3 a vidím, že sa to pomenilo tak by som sa rád spýtal ako sa pripojím z modelu do sql.
V modeli píšem čítanie z SQL ktoré predávam do presentera. Spojenie medzi modelom a presenterom sa mi podarilo po neakej dobe vyriešiť takto v presenteri volám:

$this->context->getService('názov modelu')->názov funkcie();

A potreboval by som poradiť ako v modeli sa píše SQL dotaz. Používal som toto:

/** @var Nette\Database\Context */
    private $database;

    public function __construct(Nette\Database\Context $database)
    {
        $this->database = $database;
    }
	public function funkcia() {
		$this->database->table(názov tabulky)->where(where dotaz)->fetch();
	}

Kde mi vyhadzuje chybu na database.
Notice

Undefined property: App\Model\HomepageModel::$database

Vopred dakujem za poradenie.

David Matějka
Moderator | 6445
+
+3
-

Ten kod by mel fungovat, ukaz cely HomepageModel, ukaz ladenku, pripadne nasdilej projekt, jestli to pujde.

Mimochodem, i v presenteru pouzivej DI, viz doc: https://doc.nette.org/…dependencies

rastik1585
Člen | 2
+
0
-
/** @var Nette\Database\Context */
   private $database;

   public function __construct(Nette\Database\Context $database)
   {
       $this->database = $database;
   }

Tento kód som mal v Model.php a vlastne HomepageModel ho dedil. Tak som to teraz skúsil dať priamo do HomepageModelu a ide to. Vo verzii 2.2 stačilo mi to mať v Modeli odkiaľ všetky Modeli dedily a išlo to.
Dakujem za odpoveď

David Matějka
Moderator | 6445
+
0
-

Za tohle nemuze Nette, precti si o viditelnostni tridnich clenu, private je viditelne pouze v tride, kde je to definovane.