Autor | Zpráva | ||
---|---|---|---|
radvis Profil * |
#1 · Zasláno: 27. 2. 2010, 20:09:56
Ahoj, mohl by mi někdo prosím poradit? Mám kód, který vybere záznam z více tabulek, ale vypíše mi pouze jeden záznam.
Kód: return $this->db->select('%n.*, %n AS `velikost`', $this->kategorie, $this->velikosti . '.velikost') ->from($this->kategorie) ->leftJoin($this->velikosti) ->on('%n = %n', $this->kategorie . '.id_rodic', $this->velikosti . '.id_rodic') ->groupBy($this->kategorie . '.id_rodic'); Díky za rady. |
||
Majkl578 Profil |
#2 · Zasláno: 27. 2. 2010, 21:09:39
Není to náhodou dibi?
Pokud ano, fetchAll/fetchAssoc vrací všechny záznamy. |
||
radvis Profil * |
#3 · Zasláno: 27. 2. 2010, 21:12:21
Ano, je. V presenteru mám fetchAll, ale nefunguje to:(
|
||
Jan Tvrdík Profil |
#4 · Zasláno: 1. 3. 2010, 19:14:10 · Upravil/a: Jan Tvrdík
„nefunguje to“
A jak se ta nefunkčnost projevuje? |
||
AM_ Profil |
#5 · Zasláno: 1. 3. 2010, 20:43:48
radvis:
jestli tenhle kód něco vypíše, tak jsem čínský bůh srandy (tedy teoreticky by to šlo, ale to nebude tento případ). To, že máš v presenteru fetchAll, ještě neznamená, že ho správně používáš, taky můžeš mít chybu v dotazu, nebo prostě v databázi je jen jeden odpovídající záznam. Těžko odsud vyvěštit. |
||
radvis Profil * |
#6 · Zasláno: 1. 3. 2010, 21:37:14
Funguje to přesně jak má, jen je problém vtom, že mi to vypíše pouze jeden výraz z db.
|
||
AM_ Profil |
#7 · Zasláno: 1. 3. 2010, 21:39:45
radvis:
„Funguje to přesně jak má, jen je problém vtom, že mi to vypíše pouze jeden výraz z db.“ Musím trvat na tom, že výše uvedený kód nevypíše lautr nic. |
||
radvis Profil * |
#8 · Zasláno: 1. 3. 2010, 21:48:09
Neměl bych ti zazlé, kdyby jsi mi poradil, jak to opravit. Ale pořád si stojím za svým, že to vypíše jeden záznam:D.
|
||
Majkl578 Profil |
#9 · Zasláno: 1. 3. 2010, 21:51:01
radvis:
Kód uvedený v [#1] nevypíše nic. "Něco" "někam" (do vzduchu?) vrátí instanci třídy DibiRow. Tím to končí. Pokud tu má někdo detekovat problém, vlož kód s dalším použitím. |
||
radvis Profil * |
#10 · Zasláno: 1. 3. 2010, 21:56:37
Presenter:
... $kategorie = new Reality; $this->template->kategorie = $kategorie->Kategorie()->fetchAll(); ... Model: return $this->db->select('%n.*, %n AS `velikost`', $this->kategorie, $this->velikosti . '.velikost') ->from($this->kategorie) ->leftJoin($this->velikosti) ->on('%n = %n', $this->kategorie . '.id_rodic', $this->velikosti . '.id_rodic') ->groupBy($this->kategorie . '.id_rodic'); Sablona: {foreach $kategorie as $kategories} {!$kategories->nazev}</strong> {!$kategories->velikost} <!--zde se mi vypíše jeden záznam--> {/foreach} |
||
AM_ Profil |
#11 · Zasláno: 1. 3. 2010, 22:08:47
No vida, tohle už něco vypíše :)
Ten osiřelý </strong> tam určitě nebude dobře. Když tak koukám na ten dotaz, určitě tam má být "group by"? Neznám strukturu tvé tabulky a nevím, jaká v ní máš data, ale pojmenovávat primární klíč tabulky kategorií jako "id_rodic" je docela divné, a jestli to není primární klíč, tak mi není jasné, co to tam vymýšlýš. |
||
radvis Profil * |
#12 · Zasláno: 1. 3. 2010, 22:14:05
Promiň, to strong tam být nemá. Nejde v tuhle chvíli jak to je popsané, ale jak to funguje, potrebuju neco podobného jako je zde na sreality např: " Byty k prodeji
55 032 bytů: Půdní vestavby, 1+kk, 1+1, 2+kk, 2+1, 3+kk, 3+1, 4+kk, 4+1 a větší ". Je to strašná splácanina ten model, nevěděl jsem jak to dát dohromady. |
||
Jan Tvrdík Profil |
#13 · Zasláno: 1. 3. 2010, 22:51:40
Zavolej po provedení dotazu
dibi::dump() , ať vidíš sestavený SQL dotaz. Bude se to ladit lépe, než DibiFluent.
|
||
AM_ Profil |
#14 · Zasláno: 1. 3. 2010, 23:15:35
radvis:
> Byty k prodeji > 55 032 bytů: Půdní vestavby, 1+kk, 1+1, 2+kk, 2+1, 3+kk, 3+1, 4+kk, 4+1 a větší Ta velikost bude vždycky jeden záznam, nemůžeš v jednom řádku mít neurčitou množinu :) To GROUP BY tam nepatří, dotaz by měl vypadat nějak takto: SELECT kategorie.nazev, velikosti.velikost FROM kategorie LEFT JOIN velikosti ON kategorie.velikost=velikosti.id Z databáze se vrátí něco takového: "Obytný dům"-"1+kk" "Obytný dům"-"1+1" "Obytný dům"-"2+1" "Byt"-"1+kk" "Byt"-"2+kk" Pak to musíš nějakým chytrým cyklem vypisovat tak, aby vzniklo: Obytný dům 1+kk,1+1,2+1 Byt 1+kk,2+kk Použil jsem v dotazu jiné identifikátory, ty tvoje moc nechápu, nicméně toto je princip získávání dat z relace typu "jedna kategorie je v relaci s několika velikostmi" |
||
radvis Profil * |
#15 · Zasláno: 2. 3. 2010, 20:53:55
Stejne přemýšlím, že to dám do jedné tabulky, nebylo by to jednodužší než to řešit přes více tabulek?
|
||
AM_ Profil |
#16 · Zasláno: 2. 3. 2010, 21:20:40
radvis:
„Stejne přemýšlím, že to dám do jedné tabulky, nebylo by to jednodužší než to řešit přes více tabulek?“ No, rozhodně ne čistější :) možná by to bylo rychleji naprogramované, nicméně méně pružné. Řešení přes dvě tabulky je kvalitnější a do budoucna snáze modifikovatelné, ikdyž je trochu práce ho vytvořit. Samozřejmě když si kategorie napatláš do jednoho VARCHARu, budeš to mít nakóděné rychleji. |
||
radvis Profil * |
#17 · Zasláno: 2. 3. 2010, 22:07:58
AM_ díky za příklad, ale pokoušel jsem se to rozjet, ale stále nic:( asi to prozatím dám do té jedné tabulky a později bych to dal do jiné.
|
||
radvis Profil * |
#18 · Zasláno: 2. 3. 2010, 23:01:31
Nevěděl by jsi spíš jak do:
$form->addText('title', 'Nadpis:'); Přidám class? Aby html vypadalo: <input type="text" name="title" class="test"> ? Díky:). |
||
Časová prodleva: 16 let
|
0