Relace ,,has many,, mezi dvěmi tabulkami
- ForestCZE
- Člen | 209
Ahoj, snažím se propojit dvě tabulky:
Potřebuji vytáhnout name z tabulky users na základě shodných ID.
Pokud se nepletu, tak se jedná o relaci has many
.
Metoda pro získání dat:
public function getLog(): array
{
$logs = [];
$allLogs = $this->database->getLog()->select(':users.name')->order('log_id DESC');
foreach ($allLogs as $log)
$logs[] = $log;
return $logs;
}
Latte:
<table>
<tr>
<th>Test</th>
<th>Test 2</th>
</tr>
{foreach $logs as $log}
<tr>
<td>{$log->action}</td>
<td>{$log->name}</td>
</tr>
{/foreach}
</table>
Chyba: No reference found for $log->related(users).
Nevím,
proč tam není reference a co mám špatně. Předem děkuji za pomoc.
- David Matějka
- Moderator | 6445
Ahoj, kazdy log zaznam ma jednoho uzivatele. takze jde o „has one“. z druheho smeru ma pak kazdy uzivatel vice log zaznamu, takze od uzivatele je to „has many“
a kdyz referencujes has one vazbu, tak uvadis jako klic substring spojovaciho
sloupecku, tady to bude ->select('name.name')
(vhodnejsi nazev
sloupecku by byl user_id a ne name_id)
ale vubec to nepotrebujes selectovat v modelu, staci, kdyz v sablone zapises
$log->name->name
- David Matějka
- Moderator | 6445
ano, to je spravne. to jsem zapomnel zminit, ze tou zmenou sloupce se zmeni tenhle spojovaci klic. ale melo by to vyplivat z toho
a kdyz referencujes has one vazbu, tak uvadis jako klic substring spojovaciho sloupecku
- ForestCZE
- Člen | 209
David Matějka napsal(a):
ano, to je spravne. to jsem zapomnel zminit, ze tou zmenou sloupce se zmeni tenhle spojovaci klic. ale melo by to vyplivat z toho
a kdyz referencujes has one vazbu, tak uvadis jako klic substring spojovaciho sloupecku
Super, moc děkuji. Mohu se ještě zeptat, co uvádím nebo jak se zapisuje, když se jedná o has many? Určitě se to bude hodit :)