Şema
Şemalar isteğe bağlıdır. Bir şema birbirinden bağımsız iki iş yapar: her yazmayı doğrular ve hangi alanların dizin alacağını belirtir. Şema olmayan koleksiyonlar her türlü dizi verisini kabul eder.
$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);
Şemanın koleksiyon adı, deponun koleksiyon adıyla eşleşmelidir; aksi durumda oluşturma hata verir. Şemanın oluşturucuya aktarılması, tanımlı dizinleri de hemen eşitler.
Doğrulama kuralları
requiredalanlar yazılan veride bulunmalıdır. Denetlenen şey varlıktır: açıkça belirtilmiş birnull, zorunlu bir alanı karşılar.- Türü belirlenmiş alanlar yalnızca mevcut ve null değilse denetlenir.
stringalanıintdeğerini reddeder;floatalanı hemfloathem deintdeğerini kabul eder. mixedalanları her şeyi kabul eder; bir alanı türünü kısıtlamadan zorunlu veya indeksli olarak işaretlemek için kullanışlıdır.- Şemada tanımlanmayan alanlarda kısıtlama yoktur.
Doğrulama başarısız olursa herhangi bir veri yazılmadan önce StorageException fırlatılır.
Alan türleri ve bayraklar
Desteklenen türler: string, int, float, bool, mixed.
Alan başına bayraklar: index() (eşitlik indeksi), unique() (benzersizlik yazma sırasında uygulanır), range() (gt/lt/between/prefix için sıralı indeks ve sıralı aralık sorguları) ve required().
Şema değişiklikleri
İndeksler, depo oluşturulurken eşitlenir. Bir şema değişikliği tanımlanan indeks kümesini değiştirirse indeks bildirimi de değişir ve etkilenen indeksler mevcut kayıtlardan yeniden oluşturulur; doğrulama kurallarındaki değişiklikler yalnızca gelecekteki yazmalara uygulanır ve kayıtlı verileri hiçbir zaman yeniden yazmaz.
Aynı Schema nesnesi, SQL yansısındaki türü belirlenmiş sütunları eşlemek için yeniden kullanılabilir; deponun kendisi şemayı kullanmayan koleksiyonlar için de.