Nette, NotOrm, M:N problém
- potapnik
- Člen | 127
Zdravím vespolek,
řeším následující problém. Dejme tomu, že máme několik dětí a několik druhů ovoce (pro zjednodušení :) jinak bych se v tom zamotal). Mám tabulku dětí a tabulku ovoce. Jednotlivým dětem potřebuju přiřadit nejen druh ovoce co mají, ale taky počet, a tady jsem v koncích. Dokáže jednomu dítěti přiřadit banán, jablko a hrušku, ale nevím, jak v NotORM nastavit taky počet. Logicky bych to udělal tak, že v tabulce mapování ovoce na děti (ovoce_deti – dle vzoru na webu NotORM) přidám kolonku počet. Jenže jak s pomocí NotORM dostanu tuhle hodnotu, jestli jsem to dobře pochopil, tak NotORM s tabulkou ovoce_deti pracuje samo bez možnosti vytáhnout z toho data. Zatím to řeším samostatným SQL dotazem, ale to mi přijde dost kostrbaté. Díky předem za nakopnutí správným směrem :-)
P.S.: v poslední době zjišťuju, že můj život nějak nefunguje bez Nette, NotORM, Admineru a Adminer Editoru (sorry Davide, dřív tam taky bylo dibi, ale doba se mění ;-) )
- dakota
- Člen | 148
Štruktúra tabuliek:
child: id, name
child_fruit: child_id, fruit_id
fruit: id, name
Výpis:
foreach ($database->table('child') as $child) {
echo 'Child: ' . $child->name . '<br>';
echo 'Fruit count: ' . $child->related('child_fruit')->count() . '<br>';
foreach ($child->related('child_fruit') as $child_fruit) {
echo 'Fruits: ' . $child_fruit->fruit->name. ', ';
}
echo '<br>';
}
Dúfam že to pomôže.
Editoval dakota (19. 1. 2011 16:55)
- vrana
- Člen | 131
potapnik napsal(a):
NotORM s vazbami M:N vůbec nepracuje, zná jen vazby 1:N a N:1. Takže když chci vypsat nějaký sloupec z vazební tabulky, je to jednoduché (syntaxe NotORM):
<?php
foreach ($child->child_fruit() as $child_fruit) {
echo "$child_fruit[number] " . $child_fruit->fruit["name"] . "\n";
}
?>
Vložení je obdobně jednoduché.
Dakota to podle mě špatně pochopil – vypisuje počet druhů ovoce.