Pereiti prie turinio

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.

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);

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

  • required laukai turi būti įrašomuose duomenyse. Tikrinama, ar laukas yra: aiškiai nurodžius null, privalomo lauko reikalavimas įvykdomas.
  • Tipuoti laukai tikrinami tik tada, kai jų reikšmė pateikta ir nėra null. string laukas atmeta int reikšmę; float laukas priima ir float, ir int.
  • mixed laukai 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.