تولید آگاه از طرح‌واره

یکی از قدرتمندترین ویژگی‌های این پکیج، قابلیت تولید کدی است که از طرح‌واره ماژول شما آگاه است. این بدان معناست که ژنراتور می‌تواند به طور خودکار DTO‌ها، قوانین اعتبارسنجی، cast‌ها و payload‌های تست را بر اساس طرح‌واره پایگاه داده شما پر کند.

دو راه برای ارائه طرح‌واره به ژنراتور وجود دارد: از یک مهاجرت موجود یا با تعریف آن به صورت درون‌خطی با گزینه --fields.

از یک مهاجرت

اگر قبلاً برای مدل ماژول خود یک مهاجرت ایجاد کرده‌اید، می‌توانید از گزینه --from-migration استفاده کنید تا به ژنراتور بگویید طرح‌واره را از آن استنتاج کند.

bash
php artisan make:module Product --from-migration=database/migrations/2024_05_01_000000_create_products_table.php

ژنراتور فایل مهاجرت را تجزیه کرده و ستون‌ها، روابط، cast‌ها و محدودیت‌های اعتبارسنجی را استخراج می‌کند. سپس از این اطلاعات برای تولید کامپوننت‌های ماژول استفاده می‌شود.

همچنین می‌توانید یک کلمه کلیدی به گزینه --from-migration بدهید و ژنراتور سعی خواهد کرد یک مهاجرت را که با نام مدل مطابقت دارد، پیدا کند.

bash
php artisan make:module Product --from-migration

تعریف شمای درون‌خطی

اگر هنوز یک مهاجرت ایجاد نکرده‌اید، می‌توانید طرح‌واره را به صورت درون‌خطی با استفاده از گزینه --fields تعریف کنید. طرح‌واره به عنوان یک رشته از تعاریف فیلد جدا شده با کاما تعریف می‌شود.

هر تعریف فیلد فرمت زیر را دارد: name:type:modifiers.

  • name: نام فیلد.
  • type: نوع فیلد (به عنوان مثال، string، integer، decimal، boolean).
  • modifiers: لیستی از اصلاح‌کننده‌ها جدا شده با کاما (به عنوان مثال، unique، nullable، foreign=users.id).

در اینجا مثالی از نحوه تعریف یک طرح‌واره به صورت درون‌خطی آمده است:

bash
php artisan make:module Product --fields="name:string:unique,price:decimal(10,2),is_active:boolean"

این دستور یک ماژول Product با یک فیلد name که یک رشته منحصر به فرد است، یک فیلد price که یک اعشاری با 10 رقم و 2 رقم اعشار است و یک فیلد is_active که یک بولین است، تولید می‌کند.

کلیدهای خارجی

همچنین می‌توانید کلیدهای خارجی را در طرح‌واره درون‌خطی تعریف کنید. در اینجا یک مثال آمده است:

bash
php artisan make:module Product --fields="name:string,user_id:foreign=users.id"

این یک ماژول Product با یک فیلد user_id که یک کلید خارجی به ستون id جدول users است، تولید می‌کند. ژنراتور همچنین به طور خودکار یک رابطه belongsTo به مدل User در مدل تولید شده Product اضافه می‌کند.