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.