Nextras/Orm 3.0 builder addSelect

Barbarossa
Člen | 74
+
0
-

Ahoj,

potřeboval bych v Query builderu použít něco jako

$this->builder()->addSelect('COUNT(tournaments.id) AS totalTournaments');
// předat builder do DbalCollection

dbalcol však takový select ignoruje. Je to vůbec možné předat takto entitě sloupec (property jako virtual třeba)?

Celkově bych potřeboval docílit něčeho takového, aby se to naházelo do colection s entitami:

SELECT tournaments_game.*, COUNT(tournaments.id) AS totalTournaments
 FROM tournaments_game LEFT JOIN tournaments ON tournaments_game.id = tournaments.tournaments_game_id
 GROUP BY tournaments_game.id ORDER BY totalTournaments DESC LIMIT 8

Pokud použiji $this->connection->query tak to vrací Result. Ten se dá nějak aplikovat na entitu – že ybch si to třeba projel přes foreach a nějakým entity-setRawValue bych to použil?

Děkuji za každou radu nebo tip jakým směrem se mám vydat, abych docílil toho co potřebuji.

Barbarossa
Člen | 74
+
0
-

Jde to easy kdyby to někdo hledal:

// mapper method
public function getGames()
{
 $q = $this->connection->query('whatever');
 return self::toCollection($q); // lze použít pro builder i to query
}

A v entitě pak stačí ten alias (totalTournaments) uvést klasicky jako property

Editoval Barbarossa (2. 2. 2018 14:57)

tomino
Člen | 14
+
0
-

Barbarossa napsal(a):

A v entitě pak stačí ten alias (totalTournaments) uvést klasicky jako property

A ako viem potom vyriesit to, ze ked vytvaram novu entitu, chce to po mne tuto property? Ked ju aj vyplnim, vklada ju do sql dotazu …

chemix
Nette Core | 1296
+
0
-

strilim od boku, ale nepomohlo by @property-read

hrach
Člen | 1834
+
0
-

Použij {virtual} modifier

tomino
Člen | 14
+
0
-

hrach napsal(a):

Použij {virtual} modifier

Skusal som, no potom mi nenaplni tento atribut. Pouzil som @property-write …