Spojení tabulek u table selection

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

Ahoj všem.

Nějak jsem se ztratil při použití table selection a marně hledám jak na to.

Teď používám v URL parametr pro výběr kategorie zboží ve formě integer.

Data tahám takhle

return $this->db->table("items")->where("category", $category);

Chci to předělat, že funkce nebude v $category dostávat id kategorie, ale název kategorie v URL formátu.

Myslel jsem si nějak takto, ale nedaří se mi to dostat do funkční formy (No reference found for $items->categories).

return $this->db->table("items")->select("items.*, categories.slug")->where("categories.slug", $category);

V tabulce items.category mám cizí klíč na categories(id)

Díky moc za radu.

Editoval kejlicz (3. 12. 2013 14:09)

vvoody
Člen | 910
+
0
-

Názov kategórie si získaj dodatočne až v šablóne, keď budeš nad tým Selection iterovať. Nemá zmysel ťahať dáta z viacerých tabuliek jedným query.

kejlicz
Člen | 201
+
0
-

vvoody napsal(a):

Názov kategórie si získaj dodatočne až v šablóne, keď budeš nad tým Selection iterovať. Nemá zmysel ťahať dáta z viacerých tabuliek jedným query.

Nějak nechápu. Teď nevím jestli mi něco neuniká, nebo jsem dobře nepopsal, co potřebuju udělat, protože já pro ten dotaz data z 2 tabulek myslím potřebuji.

Mám prostě tabulku
items se sloupci např. id, name(varchar), category(int)
a tabulku
categories se sloupci např. id, name(varchar), slug(varchar – URL formát např. „tricka“) …

A já potřebuji vytáhnout z tabulky items všechno, co má třeba URL tvar kategorie „tricka“. Šlo by to, kdyby si předem zjistil, jaký categories.id mají „tricka“ a pak to z items tahal podle idčka kategorie, které je ve sloupci category, ale mě teď zajímá, jak to sestavit v jednom dotazu.

Editoval kejlicz (3. 12. 2013 14:44)

David Matějka
Moderator | 6445
+
0
-

pro „to one“ neni rozhodujici nazev cilove tabulky, ale nazev spojovaciho sloupecku, nazev cilove tabulky je rozhodujici pro „to many“ smer

melo by to tedy byt category.slug, problem je, ze tvuj sloupecek se primo jmenuje category a ne category_id, takze se to nepovede. jako hotfix by melo fungovat categor.slug. (ano, opravdu bez y, :) ) lepsi ale bude pojmenovavat sloupecky s cizim klicem ve stylu category_id apod. (+ doporucuju pojmenovavat tabulky v jednotnem cisle)

a je zbytecne ten slug selectovat

kejlicz
Člen | 201
+
0
-

matej21 napsal(a):

pro „to one“ neni rozhodujici nazev cilove tabulky, ale nazev spojovaciho sloupecku, nazev cilove tabulky je rozhodujici pro „to many“ smer

melo by to tedy byt category.slug, problem je, ze tvuj sloupecek se primo jmenuje category a ne category_id, takze se to nepovede. jako hotfix by melo fungovat categor.slug. (ano, opravdu bez y, :) ) lepsi ale bude pojmenovavat sloupecky s cizim klicem ve stylu category_id apod. (+ doporucuju pojmenovavat tabulky v jednotnem cisle)

a je zbytecne ten slug selectovat

Díky. Pomohlo a už to dělá konečně to co jsem zamýšlel :-)