Jak vybrat všechny sloupce u max?
- zzmichalqq
- Člen | 7
Ahoj,
vyskytl se u mě menší problém při použití metody max.
Mám dvě tabulky – kategorie a příspěvky. Každý příspěvek vždy patří pod nějakou kategorii. Příspěvky tedy mají sloupec „category_id“, který odkazuje veřejným klíčem na id kategorie. Pokud si u kategorie v presenteru zavolám metodu related(„prispevky“), provede se sql dotaz a korektně se mi vrátí všechny příspěvky spadající pod danou kategorii.
Já bych ovšem chtěl získat název nejnovějšího příspěvku, což provádím metodou max(„created_at“), a však díky ní se provede dotaz do databáze, který vrací pouze sloupec s datumem, tedy sloupec „created_at“. Potřeboval bych, aby dotaz vracel i sloupec s názvem, tedy „title“.
Přikládám kod a obrázek dotazu:
{foreach $categories as $category}
<div class="row ml-0 mr-0 p-4">
<div class="col-5">
<h4>{$category->title}</h4>
</div>
<div class="col-3"></div>
<div class="col-4"></div>
{$category->related("posts.category_id")->max("created_at")}
</div>
<hr>
{/foreach}
https://ctrlv.cz/…/04/Wr9b.png
https://ctrlv.cz/…/04/u6pa.png
Editoval zzmichalqq (4. 2. 2020 22:16)
- Šaman
- Člen | 2663
Nevím, co přesně dělá max. Jestli to spadá pod agregační funkce, tak
tam je možné vrátit jen to podle čeho se agreguje. Tohle bych řešil
pomocí sort
a limit(1)
.
Dodatek: Tak jo, je to agregační a slouží k výpočtům (třeba vrátí
max nějakých sum, tam pak není možné vracet žádné sloupce).
Editoval Šaman (5. 2. 2020 1:51)
- zzmichalqq
- Člen | 7
Šaman napsal(a):
Nevím, co přesně dělá max. Jestli to spadá pod agregační funkce, tak tam je možné vrátit jen to podle čeho se agreguje. Tohle bych řešil pomocí
sort
alimit(1)
.
Dodatek: Tak jo, je to agregační a slouží k výpočtům (třeba vrátí max nějakých sum, tam pak není možné vracet žádné sloupce).
Aha, děkuju, ani jsem nevěděl, že nějaký agregační jsou. :)