Mysql – JOINS → získání dat z propojovacích tabulek
- Shoxy
- Člen | 37
Dobrý den,
ještě se moc neovládám Database Explorer tak bych
potřeboval trošku popostrčit.
Mám databázi : Screenshot
5 tabulek: Reports,Documents,Equipments a 2 propojovací tabulky Rep_Doc a
Rep_Equ
Z tabulky Reports potřebuji získat všechny data a dále názvy (
z DocumentName a EquipmentName ) z tabulek Documents a Equipments na základě
ReportID, které je v propojovací tabulce a dále je předat šabloně.
Děkuji za pomoc!
- David Matějka
- Moderator | 6445
$reports = $database->table('reports');
foreach ($reports as $report) {
//tady uz mas k dispozici treba `$report->Name`
foreach ($report->related('rep_doc') as $doc) {
echo $doc->Document->DocumentName;
}
foreach ($report->related('rep_equ') as $equipment) {
echo $equipment->Equipment->EquipmentName;
}
}
kdyz to potrebujes do sablony, tak si tam predej ty reporty a ty foreache prepises na latte makra, jinak se nic nezmeni
- Shoxy
- Člen | 37
public function renderShow($id){
$reports = $this->database->table('reports')->get($id);
foreach ($reports->related('rep_doc.ReportID') as $doc) {
echo $doc->Document->DocumentName."<br>";
}
foreach ($reports->related('rep_equ.ReportID') as $equipment) {
echo $equipment->Equipment->EquipmentName."<br>";
}
$this->template->show = $reports;
}
Děkuji! Nakonec jsem to trošku upravil a získal to co jsem potřeboval. To, že to mohu poslat rovnou do šablony myslíš takto?
$this->template->document = $reports->related('rep_equ.ReportID');
$this->template->equipment = $reports->related('rep_equ.ReportID');
$this->template->show = $reports;
Nebo se to dá poslat všechno najednou?
- David Matějka
- Moderator | 6445
jj, kdyz tam mas jen jeden report, tak to muzes poslat do sablony takhle, jak to mas.