انتقل إلى المحتوى

المخطط

المخططات اختيارية. ويؤدي المخطط وظيفتين مستقلتين: التحقق من كل عملية كتابة، وتحديد الحقول التي تحصل على فهارس. تقبل المجموعات التي لا تستخدم مخططًا أي بيانات على هيئة مصفوفة.

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 المتطابقة، بما في ذلك المجموعات التي لا يستخدم مخزنها المخطط نفسه.