Pohled (view) a reference přes cizí klíč
- Maxell92
- Člen | 38
Ahoj,
mám v DB tabulku s výpisem projektů, pro jednoduchost cca:
CREATE TABLE `projects` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`clients_id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_czech_ci NOT NULL,
PRIMARY KEY (`id`),
KEY `clients_id` (`clients_id`),
CONSTRAINT `projects_ibfk_1` FOREIGN KEY (`clients_id`) REFERENCES `clients` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
Dále mám tabulky příjmů a nákladů a vytvořený pohled, který mi udělá výsledný balance (vynechána logika subdotazů, pro demostraci není potřeba):
CREATE VIEW projects_view AS SELECT projects.id AS id,projects.clients_id AS clients_id FROM projects
Problém je, že v okamžiku, kdy vyberu data z pohledu, nefunguje mi
reference přes cizí klíč clients_id,
tzn. {$item->clients->name}
Na pohledu cizí klíč vytvořit nejde, jak se tedy k té referenci dostanu?
Díky
- David Matějka
- Moderator | 6445
Discovered reflection pohledy nezvlada. Resenim je bud pouzit conventional reflection
nette:
database:
dsn: ...
...
reflection: conventional
Pak ale musis dodrzovat presny pravidla pri pojmenovavani. Dalsi alternativou je napsat si vlastni reflection, coz uz ale muze byt komplikovanejsi.
- David Matějka
- Moderator | 6445
Nevim, jestli je to v doc, ale muzes kouknout do kodu, v podstate jde o to, aby primarni klic byl vzdy „id“ a nazev sloupecku s FK „nazev_cilove_tabulky_id“
- Zax
- Člen | 370
Pravidla pro ConventionalReflection snad dostatečně vysvětlí řádek 37 v API dokumentaci ;-)
- pitr82
- Člen | 121
Zrovna teď jsem řešil podobný problém s dotazem :
SELECT MAX(counted) FROM
(SELECT COUNT(*) AS counted, auto_id FROM rezervace GROUP BY auto_id )
as counts;
můžete mi objasnit, jestli je nějaké omezení v reflection:
conventional oproti discovered ? Všiml jsem
si, že ConvetionalReflection nepoužívá Nette\Caching\Cache.
id a nazevTabulky_id používám v celém schématu MySql.