Oznámení
feature request: Injektovat DibiRow aktuální DibiConnection
před 8 lety
- xxxObiWan
- Člen | 844
Ahoj, prosím o úpravu setRowClass tak, aby se vytvořenému RowClass předávalo aktuální připojení k DB.
Využití:
$articles = $dibi->query("SELECT * FROM `articles`");
$articles->setRowClass('ArticleEntity');
class ArticleEntity extends DibiRow {
function getTags() {
return $this->connection->fetchAll("SELECT * FROM `articles_tags` WHERE `article_id`=%i", $this->id);
}
}
výsledkem by bylo krásné lazy načítání hodnot (v tomto případě tagů ke článku), například v šabloně
{foreach $articles as article}
{foreach $article->tags as $tag} <!-- tagy se načtou až zde -->
{$tag->name},
{/foreach}
{/foreach}
Děkuji
před 8 lety
- HosipLan
- Moderator | 4693
Tímto by jsi narazil na tzv. 1:N problém, což je velice kontraproduktivní a tento problém již řeší NotORM, nebo Nette\Database.
Nevidím v téhle změně přínos.
před 7 lety
- baz
- Člen | 43
Přesně tohle bych také potřeboval, ale neřešil bych to implicitním děděním…
Já to nechci používat v takové podobě jako je zmíněno v příspěvku, ale potřebuji nad objektem provádět složitější operace, které nejsou jen o dotazu do DB, ale nějakém zpracování získaných hodnot a vrácení výsledku.
Je implementačně hodně náročné dát funkci setRowClass druhý nepovinný parametr, který by mohl obsahovat připojení k databázi a v případě, že by existoval, tak by ji nastavil i v konstruktoru nově vznikajícího elementu?
BTW: řeším to souběžně i tady: https://forum.nette.org/…tte-database#…
ale možná to patří spíš sem, než na nette (tam jsem to zprvu zkoušel vyřešit i jinými způsoby, ale už mi zbývá pouze tento)