Skeem
Skeemid on valikulised. Skeem täidab kaht teineteisest sõltumatut ülesannet: valideerib iga kirjutuse ja määrab, millistele väljadele luuakse indeksid. Skeemita kogumid aktsepteerivad suvalisi massiivandmeid.
$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);
Skeemi koguminimi peab ühtima salvesti koguminimega, vastasel juhul viskab loomine vea. Skeemi edastamine konstruktorile sünkroonib kohe ka määratud indeksid.
Valideerimisreeglid
requiredväljad peavad kirjutatavates andmetes olemas olema. Kontrollitakse välja olemasolu: selgesõnalinenullvastab nõutud väljale.- Tüübitud välju kontrollitakse ainult siis, kui need on olemas ega ole nullväärtusega. Väli
stringlükkab väärtuseinttagasi; välifloataktsepteerib niifloatkui kaint. mixedväljad aktsepteerivad kõike ning on kasulikud välja nõutuks või indekseerituks märkimiseks selle tüüpi piiramata.- Skeemis määramata väljadele piiranguid ei seata.
Valideerimise ebaõnnestumisel visatakse StorageException enne kirjutamist.
Väljatüübid ja lipud
Toetatud tüübid: string, int, float, bool, mixed.
Väljapõhised lipud: index() (võrdsusindeks), unique() (unikaalsust kontrollitakse kirjutamise ajal), range() (järjestatud indeks valikute gt/lt/between/prefix ja järjestatud vahemikupäringute jaoks) ning required().
Skeemi muutmine
Indeksid sünkroonitakse salvesti loomisel. Kui skeemimuutus muudab määratud indeksite hulka, muutub indeksimanifest ja mõjutatud indeksid luuakse olemasolevate kirjete põhjal uuesti; valideerimisreeglite muudatused kehtivad ainult tulevastele kirjutustele ega kirjuta salvestatud kirjeid kunagi ümber.
Sama Schema objekti saab korduskasutada tüübitud veergude vastendamiseks SQL peeglis], ka nende kogumite puhul, mille salvesti ise skeemi ei kasuta.