İçeriğe geç

Ş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.

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

Ş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ı

  • required alanlar yazılan veride bulunmalıdır. Denetlenen şey varlıktır: açıkça belirtilmiş bir null, zorunlu bir alanı karşılar.
  • Türü belirlenmiş alanlar yalnızca mevcut ve null değilse denetlenir. string alanı int değerini reddeder; float alanı hem float hem de int değerini kabul eder.
  • mixed alanları 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.