Jak vybrat všechny sloupce u max?

zzmichalqq
Člen | 7
+
0
-

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 | 2635
+
0
-

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
+
0
-

Š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 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).

Aha, děkuju, ani jsem nevěděl, že nějaký agregační jsou. :)