Zamezit skládání dotazů použitím továrniček
- cafesk8
- Člen | 103
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
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
@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