Μετάβαση στο περιεχόμενο

Σχήμα

Τα σχήματα είναι προαιρετικά. Ένα σχήμα επιτελεί δύο ανεξάρτητες λειτουργίες: επικυρώνει κάθε εγγραφή και δηλώνει ποια πεδία αποκτούν ευρετήρια. Οι συλλογές χωρίς σχήμα δέχονται δεδομένα οποιουδήποτε πίνακα.

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

Το όνομα της συλλογής στο σχήμα πρέπει να ταιριάζει με το όνομα της συλλογής στον χώρο αποθήκευσης· διαφορετικά, η κατασκευή προκαλεί σφάλμα. Η παράδοση του σχήματος στον κατασκευαστή συγχρονίζει επίσης αμέσως τα δηλωμένα ευρετήρια.

Κανόνες επικύρωσης

  • Τα πεδία required πρέπει να υπάρχουν στα δεδομένα που γράφονται. Ελέγχεται η παρουσία: μια ρητή τιμή null ικανοποιεί ένα υποχρεωτικό πεδίο.
  • Τα πεδία με τύπο ελέγχονται μόνο όταν υπάρχουν και δεν είναι null. Ένα πεδίο string απορρίπτει τιμή int· ένα πεδίο float δέχεται και float και int.
  • Τα πεδία mixed δέχονται οποιαδήποτε τιμή και είναι χρήσιμα για να οριστεί ένα πεδίο ως υποχρεωτικό ή ευρετηριασμένο, χωρίς περιορισμό του τύπου του.
  • Τα πεδία που δεν δηλώνονται στο σχήμα είναι χωρίς περιορισμούς.

Αν αποτύχει η επικύρωση, προκαλείται ένα StorageException πριν από οποιαδήποτε εγγραφή.

Τύποι πεδίων και σημαίες

Υποστηριζόμενοι τύποι: string, int, float, bool, mixed.

Σημαίες ανά πεδίο: index() (ευρετήριο ισότητας), unique() (επιβολή μοναδικότητας κατά την εγγραφή), range() (ταξινομημένο ευρετήριο για gt/lt/between/prefix και ταξινομημένα ερωτήματα εύρους) και required().

Αλλαγές σχήματος

Τα ευρετήρια συγχρονίζονται κατά την κατασκευή του χώρου αποθήκευσης. Αν μια αλλαγή σχήματος τροποποιήσει το σύνολο των δηλωμένων ευρετηρίων, αλλάζει το δηλωτικό ευρετηρίων και τα επηρεαζόμενα ευρετήρια αναδημιουργούνται από τις υπάρχουσες εγγραφές· οι αλλαγές στους κανόνες επικύρωσης ισχύουν μόνο για μελλοντικές εγγραφές και δεν ξαναγράφουν ποτέ τις αποθηκευμένες εγγραφές.

Το ίδιο αντικείμενο Schema μπορεί να επαναχρησιμοποιηθεί για την αντιστοίχιση στηλοθετών με τύπους σε ένα SQL κατοπτρικό αντίγραφο, ακόμη και για συλλογές των οποίων ο χώρος αποθήκευσης δεν χρησιμοποιεί ο ίδιος το σχήμα.