Database
Database model bijwerken
Elke module met tabellen heeft een bestand: config/tablemodel.php
Dit Php-bestand bevat een array van '\core\db\TableModel'-classes en aan 't eind van het script wordt deze
teruggegeven middels een return-statement. Zie bestaande modules voor voorbeelden.
Op basis van deze instellingen wordt automatisch de tabel aangemaakt. Kolommen worden nooit gedropt. Indexes wel.
In de module-map zit een bestand 'autoload.php', hierin wordt een aanroep gedaan naar: module_update_handler('module-name', 1234);
Deze call zorgt er voor dat de database automatisch wordt bijgewerkt. Het versienummer wordt opgeslagen na een wijziging, zodat
deze actie maar 1x wordt uitgevoerd. Er wordt alleen gekeken of het versienummer verandert is, niet of deze hoger/lager is.
Services, DAO-classes & Model
In Toolbox wordt er gebruik gemaakt van Services. Het idee is dat een service alle business-logica bevat voor een actie. Als een ServiceBase-class wordt aangemaakt via de ObjectContainer is deze automatisch transactioneel.
DAO-classes bevat query's die betrekking hebben op een bepaald Object/tabel. Dit bevat bijvoorbeeld het ophalen van 1 record, verwijderen van 1 record, zoeken, etc.
Een Model-class heeft \core\db\DBObject als basis. Dit heeft betrekking op 1 rij in de database.
Automatisch genereren DAO-classes & Model
Als de codegen module is geactiveerd, kan via: Codegen => Base => Settings, 'Autogen db model' worden geactiveerd. Wanneer deze aan staat, zal automatisch eenmalig de DAO-class worden aangemaakt. Ook zal er een Base-model worden gegenereerd en een class dat deze overeft. B.v. EmailBase & Email.
Gebruik constraints
Constraints wordt tot op heden redelijk vermeden. Het idee is dat alles middels transacties verloopt, en dus lukt of in z'n geheel niet. Logica in de database wordt zoveel mogelijk vermeden en waar mogelijk in de Service-classes geplaatst.