výpis 1 sloupce z databázové tabulky už v presenteru

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

Zdravím asi to snadné, ale nomhl jsem se k tomu dopátrat.
Mám databázi s tabulkou chapter, která má sloupce ID, bookID a name:

v presenteru vypisuji do proměnné chapter

$this->chapter = $this->orderRepository->query("SELECT * FROM `chapter` ORDER BY ID ASC")->fetchAll();	//vypisuje Hlavní kapitoly menu

ale do formulářového selectu

$form->addSelect('gender', 'Pohlaví', $this->chapter->name);   // $this->chapter->name je blbě ale jak to formulovat.

Jak toto udělat v latte vím, ale potřebuji vypisovat jen sloupec name ž v presenteru.

Díky moc

ViPEr*CZ*
Člen | 818
+
0
-

Co takhle fetchPair namísto fetchAll?

Zerig
Člen | 70
+
0
-

ViPErCZ napsal(a):

Co takhle fetchPair namísto fetchAll?

Jako takto?

$this->chapter = $this->orderRepository->query("SELECT * FROM `chapter` ch LEFT JOIN `order` o ON ch.ID=o.subID WHERE (o.subID IS NULL) ORDER BY ID ASC")->fetchPair('name', 'name');

Tak to vypisuje chybu:
Call to undefined method Nette\Database\Statement::fetchPair()

a hlavně nevím co to fetchpair má udělat

Editoval Zerig (16. 10. 2013 17:58)

ViPEr*CZ*
Člen | 818
+
0
-

Tak pardon je to fetchPairs. Ale přes fetchAll to jde také, mrkněte se do dokumentace.
PS: ale toto bych si předělal do NDB.

hAssassin
Člen | 293
+
0
-

... v presenteru vypisuji do proměnné chapter ...

V presenteru kde? V render nebo v action?

EDIT: navic bych to fetchnul pres ID, cili ...->fetchPairs(id, name); Pak by to melo (nevim presne) vratit pole kde je klicem id a hodnotou name (cili presne co bych ocekaval ze bude v selektu.

Editoval hAssassin (16. 10. 2013 19:54)

Zerig
Člen | 70
+
0
-

Pořád nevím jak, a fetchPairs ani fetchAll nefunguje.
Proč to nejde tak jako v latte?

vvoody
Člen | 910
+
0
-

Zerig napsal(a):

Pořád nevím jak, a fetchPairs ani fetchAll nefunguje.
Proč to nejde tak jako v latte?

Čo to je nefunguje? Ako ti má niekto poradiť keď ti to len nefunguje?

btw fetchPairs nad Statement nemá parameter

Zerig
Člen | 70
+
0
-

vvoody napsal(a):

Zerig napsal(a):

Pořád nevím jak, a fetchPairs ani fetchAll nefunguje.
Proč to nejde tak jako v latte?

Čo to je nefunguje? Ako ti má niekto poradiť keď ti to len nefunguje?

btw fetchPairs nad Statement nemá parameter

Takže teď mám:

$this->chapter = $this->orderRepository->query("SELECT * FROM `chapter` ORDER BY ID ASC")->fetchPairs('name');
$form->addSelect('gender', 'Jméno', $this->chapter->name)

a vypisuje to:
SQLSTATE[HY000]: General error: PDO::FETCH_KEY_PAIR fetch mode requires the result set to contain extactly 2 columns

vvoody
Člen | 910
+
0
-

Ja neviem či si robíš srandu alebo čo, linkol som ti definíciu funkcie fetchPairs kde nieje žiadny parameter a ty ho tam stále cpeš. Ďalšia vec, ta exception ti jasne hovorí že v result sete musíš mať len dva stĺpce, ty si tam dal všetky stĺpce tabuľky.

Zerig
Člen | 70
+
0
-

vvoody napsal(a):

Ja neviem či si robíš srandu alebo čo, linkol som ti definíciu funkcie fetchPairs kde nieje žiadny parameter a ty ho tam stále cpeš. Ďalšia vec, ta exception ti jasne hovorí že v result sete musíš mať len dva stĺpce, ty si tam dal všetky stĺpce tabuľky.

Díky moc už jsem to pochopil.
TeĎ to vypadá takto:

$this->chapter = $this->orderRepository->query("SELECT ID, name FROM `chapter` ch LEFT JOIN `order` o ON ch.ID=o.subID WHERE (o.subID IS NULL) ORDER BY ID ASC")->fetchPairs();
$form->addSelect('gender', 'Pohlaví', $this->chapter);
ViPEr*CZ*
Člen | 818
+
0
-

vvoody napsal(a):

Ja neviem či si robíš srandu alebo čo, linkol som ti definíciu funkcie fetchPairs kde nieje žiadny parameter a ty ho tam stále cpeš. Ďalšia vec, ta exception ti jasne hovorí že v result sete musíš mať len dva stĺpce, ty si tam dal všetky stĺpce tabuľky.

No je to unbeleavable, když o x příspěvků dole dotyčný stále nezabrousil do dokumentace a nepodíval se ani na definici :-)

hAssassin
Člen | 293
+
0
-

otazka zni co presne je $orderRepository zac a proc to mas pres query a ne primo pres ndb.

Jinak bys mohl zkusit udelat fetch all a pak si to pole vytvorit rucne ve foreach a v tom chapter mit primo to pole, ne ten Statement.