Názvy tabulek a sloupců v konstantách a maglajs při concatování

H0w4rd
Člen | 96
+
0
-

U nás si lidi oblíbili, že píšou do každého repository konstanty s názvem tabulky TABLE_NAME a s názvy sloupců COLUMN_ID, COLUMN_NAME, atd…

Problém je, že konstanty se nedají rozumně concatovat do stringu když píšete SQL a vzniká nepřehledný chaos spojování stringů tečkami, příklad:

        $unavailabilityTypes = $this->unavailabilityTypeRepository
            ->findBy(
                [
                    ":" . WorkCommitmentUnavailabilityTypeRepository::TABLE_NAME . '.' . WorkCommitmentRepository::TABLE_NAME . ':' . UserRepository::TABLE_NAME . '.' . UserRepository::COLUMN_ID          => $this->user->id,
                    ":" . WorkCommitmentUnavailabilityTypeRepository::TABLE_NAME . '.' . WorkCommitmentUnavailabilityTypeRepository::COLUMN_NOT_DELETED                                                     => 1,
                    ":" . WorkCommitmentUnavailabilityTypeRepository::TABLE_NAME . '.' . WorkCommitmentRepository::TABLE_NAME . ':' . UserRepository::TABLE_NAME . '.' . UserRepository::COLUMN_NOT_DELETED => 1,
                    UnavailabilityTypeRepository::TABLE_NAME . '.' . UnavailabilityTypeRepository::COLUMN_MAX_HOURS_PER_YEAR . ' IS NOT NULL'                                                                   ,
                ]
            );

Bojuju s (ne)přehledností kódu, moc se mi to nelíbí a hledám způsob, jak zpřehlednit kód a nepřijít o výhody.

Má to samozřejmě jednu podstatnou výhodu, že IDE umí snadno najít všechny výskyty použití toho daného sloupce – kromě views, procedur, funkcí, triggerů – což je už první věc, proč s tím mám problém – stejně to použití nedohledám všude. Takže otázka je, jestli je to skutečná výhoda a jestli to za ten nečitelný chaos stojí.

Chtěl bych se hlavně zeptat, jak vy to děláte, jak se vám to nejlíp osvědčilo?
Neřešíte to a sypete názvy sloupců do kódu natvrdo?
Nebo máte nějaké pre/postfixy, díky kterým najdete spolehlivě všechny výskyty?
Nebo třeba máte názvy slouců v běžných proměnných, které se dají concatovat do uvozovkového stringu docela přehledně?
Vlastně jsem si tady nastínil několik možných řešení, ale opravdu mě nejvíc zajímá, jak to děláte.

Editoval H0w4rd (24. 1. 2023 15:50)

Kamil Valenta
Člen | 815
+
+6
-

My jsme si položili otázku „kolikrát za poslední 4 roky“ bylo potřeba přejmenovat tabulku nebo nějaký sloupec.
A protože odpověď byla 0×, ne, taková divočina s konstantami by nám za to nestála.
Z historických důvodů máme možnost v neonu definovat prefix názvů tabulek, ale ani to nebylo ani jednou použito…