Nedaří se vypsat obsah tabulky
- Budry
- Člen | 88
Zdravím,
doposavad, jsem všechny projekty měl postavené na dibi, ale rád bych
přešel na Nette\Database a abych se přiznal vůbec si nevím rady.
Koukám tu do toho přes hodinu, ale nedaří se mi přijít na to, co dělám blbě :(
Presenter:
public function renderDefaul()
{
$this->template->tests = $this->context->createCircles(); // Potřebuji vypsat všechny znáznamy
/** Nefunguje ani $this->template->tests = $this->context->createCircles()->where(array('id_circle'));
**/
}
V configu jsem upravil snad vše co jsem měl
common:
parameters:
database:
driver: mysql
host: localhost
dbname: dbmytest
user: root
password:
...
factories:
circles: Circles
A nakonec model Circles.php
<?php
use Nette\Database\Connection,
Nette\Database\Table\Selection;
class Circles extends Selection
{
public function __construct(\Nette\Database\Connection $connection)
{
parent::__construct('circles', $connection);
}
}
Tabulka v db se jmenuje circles a data v ní jsou…
Chybu to žádnou nevyhazuje, jen když se pokusím vypsat v šabloně $tests
tak není i přes to, že by snad měla být
$this->template->tests = $this->context->createCircles();
Undefined variable: tests
Mohl by někdo prosím poradit…
Předem dík
- leninzprahy
- Člen | 150
Ahoj,
neměla by se ta metoda jmenovat renderDefault(), tzn.
nechybí tam t na konci?
- Budry
- Člen | 88
hrach:
A dá se někde zjistit co je dobrý přístup?
Mám s tím poslední dobou dost problémy, dokud se člověk učí základy
tak ho to tak netíží, ale jak sem se seznámil s Nette už trochu víc rád
bych se ho naučil používat „správně“. Tak nějak mám obavy, že ať
píši co píši vyleze z toho ve výsledku nějaká prasárna (co se
kódu týče).
Jinak Nette\Database jsem vzdal. Potřebuju pracovat a až bude víc volno tak na něj kouknu, zatím jsem se radši vrátil ke dibi…
- vvoody
- Člen | 910
Snad nebudem trepat dve na tri…
Treba si len davat pozor aby sme jednu instanciu Nette\Database\Table\Selection nepouzili omylom dva krat, kedze je to taka jednorazova trieda v ktorej sa nabaluju informacie nazbierane metodami select,where,order,limit…
Totizto jednoducho by sa mohlo prihodit, ze po pouziti tejto instancie, dajme tomu ulozenej v prezenteri X, by si niekedy neskor zrazu potreboval pouzit Selection na tu istu tabulku na inom mieste toho prezentera, (napriklad tovarnicka komponenty) tam by uz nastal problem, kedze ta instanciu uz nemusi byt „cista“, preto je istejsie si drzat po ruke instanciu Nette\Database\Connection od ktorej dostanes vzdy novu „nezaprasenu“ Selection.
Mozno by si selectin zasluzil obalit (nie extend ale nieco ako tovarnicka) do dalsej triedy ktora by len uchovavala connection a nazov tabulky, co by viedlo podla mna k cistejsiemu kodu. Ak by takato trieda fajn v modeli reprezentujucom jednu tabulku, namiesto toho aby tento model mal pristup k celej databaze cez Nette\Database\Connection.
Na druhu stranu ak si svoju triedu Circles nikam neukladas pre buduce pouzitie tak problem nenastane, ale extendovat triedu ako Selection proste moc pekneni neni. Tiez ma to hned zarazilo ako @Hrach-a.
- Budry
- Člen | 88
Mno… :-) plnoletej už nějakej ten pátek jsem, ale vždycky mi to přišlo hrozně málo na to abych se tam mohl podívat :D
Jen co se vyhrabu ze zkoušek tak se stavim :D
Jinak díky, už jsem pochopil jak jste to mysleli. S Nette\Database to byl první kontakt a jel jsem podle toho jak sní pracovali v quickstartu… zdá se že jsem šlápnul vedle
Elijen: souhlas
Editoval Budry (26. 4. 2012 23:09)
- Elijen
- Člen | 171
hrach napsal(a):
okamžitě přestaň instancovat vlastni selection :) to určitě není správný přístup :D
Asi by to mělo zmizet z quickstartu :)
https://doc.nette.org/cs/quickstart#…
Editoval Elijen (26. 4. 2012 23:28)