Nette Explorer a ublaboo\DataGrid a složené klíče
- BayerMeister
- Člen | 10
Omlouvám se, jestli jsem to přehlídl, ale nedohledal jsem.
Zasekávám se s DataGridem, když jde o složené klíče. Nejprve kontext,
DB tabulky:
Zjednodušeně mám 3 tabulky: A, B, mezi
nimi M:N vazbu řešenou pomocnou tabulkou C.
„Vazební“ tabulka C má 2 cizí klíče,
A_id
a B_id
, které spolu tvoří primární klíč
této tabulky C.
Pro jeden konkrétní řádek A bych chtěl vypast
DataGridem všechny řádky B (ale i navazující N:1 vazby
z B).
Napadlo mě stavit DataSource okolo tabylky C s
WHERE A_id = x
, od C jsou totiž všechny vazby
N:1 (jednoduché ->ref
).
Přesto v této tabulce vázne to, že kdybych chtěl udělat akci např. na
smazání řádku, potřeboval bych podat akci celý klíč
[A_id, B_id]
.
Snažím se jít komplikacím z cesty už při tvorbě datového modelu, dělám vazby neidentifikující když to jde… ale tady se toho složeného PK zbavit asi nedá.
Máte někdo na tyto situace recept?
(Udělat pro tento účel na webu jednu tabulku ručně mě napadlo, ale
obcházet se nevyplácí, určitě mě to potká znova a znova a pak bude
potřeba datafiltrovat/řadit a budu zase zde – tímto chci poděkovat
klukům za super komponenty a přínos celé komunitě.)
Ještě zmíním: Zkoušel jsem si udělat v DB pohledy tam, kde jsem
viděl, že mám mnohonásobné vazby N:1, protože bych to DataGridu nedokázal
vysvětlit (v 3. parametru column
jsem zkoušel
'B.C.D.name'
), ale zde (u DB VIEW) jsem narazil na to, že
DataGrid dělá některé operace s ActiveRow, které končí výjimkou, pokud
podkladová tabulka nemá definovaný PK, což pohledy nemají, tak jsem tuto
cestu opustil.
Běžně používám NDBT – DB Explorer, ale abych si napasl větší
JOINy bez VIEWs, zkouším tu i Ublaboo\NetteDatabaseDataSource
.
Nicméně třeba parametry akcí (potřebu složeného klíče) to
neřeší.
Předem díky za každou pomoc.