DiscoveredReflection a view
- enumag
- Člen | 2118
Mám jednu databázi a dvě aplikace které s ní pracují. Ta druhá potřebuje kromě jiného tabulku uživatelů (kvůli přihlašování) a navíc ji ještě nesmí vidět celou. Vyřešil jsem to tím, že jsem si vytvořil VIEW na tuto tabulku a druhá aplikace dostala práva pouze k tomu VIEW a k původní tabulce nikoli.
Nyní ale nastává problém. Používám discovered reflexi, která ale na tom view nedokáže identifikovat primární klíč (kde by se taky vzal – sloupec id tam sice je, ale to je jen konvence). Konkrétně to spadne na $row->toArray() v authenticatoru když předávám řádek do identity.
Co s tím? (Pozn. ConventionalReflection není řešení, konvence nejsou vždy dodrženy takže je třeba DiscoveredReflection.)
- enumag
- Člen | 2118
Pouze lenost a relativní složitost obecného řešení. :-D Jednak je potřeba detekce co je view a co ne, což se dá vytáhnout z driveru, ale muselo by se to cachovat aby se pořád nevolalo SHOW TABLES. Potom bych z toho view potřeboval vytáhnout tu parent tabulku což nevím jestli lze. Pokud ne, musela by ta reflexe vyžadovat ještě nějakou konfiguraci navíc.
Zatím nějak přežívám bez views, ten jeden případ jsem tehdy vyřešil v podstatě způsobem který jsi popsal. Třeba se dokopu k řešení až na to zase narazím. ;-)
- hrach
- Člen | 1838
Dle me je plne korektni a postacuji manualni defice pole, na cem view muze zaviset.
$reflection = new Discovered2Reflection;
$reflection->addViewReference('view', 'table');
$reflection->addViewReference('view', 'table_next');
S tim, ze by bylo treba odchytavat v cyklu asi vyjimku, kdyz by bylo pro jeden view vice reseni. To by slo vyresit tim, ze zrefactorujeme reflection, ktere bude nove vracet jen null. To by slo pekne vyresit v souvislosti s timto.
- hrach
- Člen | 1838
(Vyjimky jsou zbytecna rezie navic v tomto pripade, je treba dosahnout rychlosti, navic bychom se priblizili k mozne implementaci reflection chainu)
- enumag
- Člen | 2118
Vyhazoval bych něco jako InvalidArgumentException už při volání addViewReference pokud by view již existovalo.
U odkazované issue 778 stačí jen vyhodit jiný typ než PDOException s lepší msg, ne?
U reflection chainu jsou výjimky imho nežádoucí režie.
- hrach
- Člen | 1838
To s tim Invalid…, nevim na co reagujes, ale asi si nepochopoil ten problem :D
Add 778, jde tez o neco jineho, a to zde: https://github.com/…ctiveRow.php#L292, se to ma catchnout a vyhodin MemberAccessException.