Autor | Zpráva | ||
---|---|---|---|
Hricer Profil * |
#1 · Zasláno: 5. 3. 2013, 19:52:28
Zdravím,
chci použít Nested sets model (traverzování kolem stromu) pro strukturu stránek. Př.: id | title | content | lft | rgt | depth | url 2 | Služby | lorem ipsum | 5 |10 | 1 | sluzba 5 | Nějaká služba | lorem ipsum | 8 | 9 | 2 | nejaka-sluzba Nevím jak identifikovat konkrétní stránku pomocí friendly url (např. /sluzby/nejaka-sluzba). Sloupeček URL totiž není unikátní. Nemůžu nic najít a přitom mi připadá, že to už někdo musel řešit. Díky za jakýkoli návrh. |
||
juriad Profil |
#2 · Zasláno: 5. 3. 2013, 20:30:55 · Upravil/a: juriad
možná by mohlo fungovat:
SELECT GROUP_CONCAT(tabulka.url ORDER BY cesta.depth SEPARATOR '/') FROM tabulka JOIN (SELECT MAX(id), depth FROM tabulka WHERE id <= $current_id GROUP BY depth) cesta ON cesta.id = tabulka.id Ten subselect by měl zjistit id všech stránek na cestě z rootu, pro každou úroveň jednu stránku; vnější select jen slepí url příslušných stránek pomocí lomítka v pořadí od rootu. |
||
Hricer Profil * |
#3 · Zasláno: 5. 3. 2013, 23:53:41
juriad:
Právě to potřebuji přesně naopak. Neznám ID, ale cestu (např. /sluzby/nejaka-sluzba). |
||
Hricer Profil * |
#4 · Zasláno: 6. 3. 2013, 15:04:01
Našel jsem pouze jeden jediný článek a chci se o něj podělit. Dotaz by mohl vypadat nějak takto:
SELECT node.* , GROUP_CONCAT(parent.url ORDER BY parent.lft SEPARATOR '/' ) path FROM pages AS node, pages AS parent WHERE node.url = 'nejaka-sluzba' AND parent.url IN ('sluzby', 'nejaka-sluzba') AND node.lft BETWEEN parent.lft AND parent.rgt GROUP BY node.url HAVING path = 'sluzby/nejaka-sluzba' ORDER BY node.lft Nejsem si jistý jestli to bude fungovat úplně dobře, ale snad ano. Někdo zkušenější to snad zkontroluje a napíše sem. |
||
Časová prodleva: 11 let
|
0