Spojení tabulek u table selection
- kejlicz
- Člen | 201
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)
- kejlicz
- Člen | 201
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
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
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 fungovatcategor.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 :-)