Schema
Schemos yra pasirenkamos. Schema atlieka dvi atskiras funkcijas: tikrina kiekvieną įrašymą ir deklaruoja, kuriems laukams taikomi indeksai. Kolekcijose be schemos priimami bet kokie masyvo duomenys.
$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);
Schemos kolekcijos pavadinimas turi sutapti su saugyklos kolekcijos pavadinimu; priešingu atveju kuriant objektą įvyksta klaida. Perduodant schemą konstruktoriui, deklaruoti indeksai taip pat iškart sinchronizuojami.
Tikrinimo taisyklės
requiredlaukai turi būti įrašomuose duomenyse. Tikrinama, ar laukas yra: aiškiai nurodžiusnull, privalomo lauko reikalavimas įvykdomas.- Tipuoti laukai tikrinami tik tada, kai jų reikšmė pateikta ir nėra null.
stringlaukas atmetaintreikšmę;floatlaukas priima irfloat, irint. mixedlaukai priima bet kokias reikšmes; jais naudinga pažymėti lauką kaip privalomą ar indeksuotą, neribojant jo tipo.- Schemoje nedeklaruojamiems laukams apribojimų nėra.
Nepavykus patikrinti duomenų, išmetama StorageException klaida ir nieko neįrašoma.
Laukų tipai ir žymos
Palaikomi tipai: string, int, float, bool, mixed.
Lauko žymos: index() (lygybės indeksas), unique() (unikalumas tikrinamas įrašymo metu), range() (surikiuotas gt/lt/between/prefix ir surikiuotų intervalų užklausų indeksas) ir required().
Schemos pakeitimai
Indeksai sinchronizuojami kuriant saugyklą. Jei pakeitus schemą pasikeičia deklaruotų indeksų rinkinys, pasikeičia indeksų manifestas, o paveikti indeksai atkuriami iš esamų įrašų; tikrinimo taisyklių pakeitimai taikomi tik būsimiems įrašams ir niekada nepakeičia saugomų įrašų.
Tą patį Schema objektą galima pakartotinai naudoti tipuotų stulpelių atvaizdavimui SQL veidrodyje, taip pat kolekcijoms, kurių saugykla pačios schemos nenaudoja.