Preskočiť na obsah

Schéma

Schémy sú voliteľné. Schéma plní dve nezávislé úlohy: overuje každý zápis a deklaruje, ktoré polia získajú indexy. Kolekcie bez schémy prijímajú údaje v ľubovoľnom formáte poľa.

PHP
$schema = Schema::collection('posts')
    ->string('slug')->unique()
    ->string('status')->index()
    ->int('publishedAt')->range()
    ->bool('featured')
    ->required(['slug', 'status']);

$posts = new DocStore($root, 'posts', schema: $schema);

Názov kolekcie v schéme sa musí zhodovať s názvom kolekcie v úložisku; inak vytvorenie zlyhá. Odovzdaním schémy konštruktoru sa tiež okamžite zosynchronizujú deklarované indexy.

Pravidlá overovania

  • V poliach required musí byť vo zapisovaných údajoch uvedená hodnota. Kontroluje sa prítomnosť: explicitná hodnota null spĺňa požiadavku na povinné pole.
  • Typované polia sa kontrolujú iba vtedy, keď sú prítomné a nemajú hodnotu null. Pole typu string odmieta hodnotu int; pole typu float prijíma hodnoty float aj int.
  • Polia mixed prijímajú ľubovoľnú hodnotu a hodia sa na označenie povinného alebo indexovaného poľa bez obmedzenia jeho typu.
  • Polia, ktoré nie sú deklarované v schéme, nemajú žiadne obmedzenia.

Neúspešné overenie vyvolá StorageException ešte pred zápisom.

Typy polí a príznaky

Podporované typy: string, int, float, bool, mixed.

Príznaky pre jednotlivé polia: index() (index rovnosti), unique() (jedinečnosť vynucovaná pri zápise), range() (zoradený index pre gt/lt/between/prefix a zoradené rozsahové dotazy) a required().

Zmeny schémy

Indexy sa synchronizujú pri vytvorení úložiska. Ak zmena schémy upraví množinu deklarovaných indexov, zmení sa manifest indexov a dotknuté indexy sa znova vytvoria z existujúcich záznamov. Zmeny pravidiel overovania platia iba pre budúce zápisy a nikdy neprepíšu uložené záznamy.

Ten istý objekt Schema možno opakovane použiť na mapovanie typovaných stĺpcov v zrkadle SQL, a to aj pre kolekcie, ktorých úložisko túto schému samo nepoužíva.