Zamezit skládání dotazů použitím továrniček

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
cafesk8
Člen | 103
+
0
-

Zdravím,

ve své aplikaci jsem doteď tahal data z databaze pomocí služeb takto:

config.neon

<?php

services:
	database: @Nette\Database\Connection
	users:
		factory: @database::table(users)
?>

presenter – startup

<?php
$this->users	= $this->getService('users');
?>

presenter – dotaz na db a předání do šablony

<?php
$this->template->uzivatel = $this->users->where(podminky)->fetch();
?>

Teď jsem narazil na situaci, když pokládám více dotazů na tabulku, tak se mi podmínky where u dotazů slučují, což není v mém případě přístupné. Hledal jsem různá řešení a narazil jsem na toto: Jak přinutit nette udělat více dotazů na místo jednoho.

Bohužel se mi nedaří správně nakonfigurovat config.neon a poté to celé nějak zaregistrovat, aby se mi při každém volání dotazu vytvořila nová instance. Ve výsledku bych chtěl používat něco jako:

<?php
$this->template->uzivatel = $this->users->where(podminky)->fetch();
$this->template->uzivatel2 = $this->users->where(podminky2)->fetch();
?>

Mohli byste mi prosím nějak poradit jak to celé správně nakonfigurovat?
Děkuji

vvoody
Člen | 910
+
0
-

cafesk8 napsal(a):

Zdravím,

ve své aplikaci jsem doteď tahal data z databaze pomocí služeb takto:

config.neon

<?php

services:
	database: @Nette\Database\Connection
	users:
		factory: @database::table(users)
?>

Ked si poziadas viac krat o ktorukolvek sluzbu (getService) tak vzdy dostanes ten isty objekt. Preto je treba „users“ zadefinujeme ako tovarnicku, alebo lepsie povedane zadefinujeme tovarnicku pre „users“.

services:
	database: @Nette\Database\Connection

factories:
	users: @database::table(users)

presenter:

	$users1 = $this->context->createUsers();
	$users2 = $this->context->createUsers();
	// su to dva odlisne objekty, teraz by ti to malo fungovat
David Ďurika
Člen | 328
+
0
-

@cafesk8 ja som mal v jednej app tiez taketo modely, casom som zistil ze to nie je moc dobry sposob… kukni si https://github.com/…ette-addons/ ako to tu riesia