Dengan menggunakan open-source blueprint ini, kita mampu menjimatkan masa sehingga 70% untuk membangunkan aplikasi laravel. Ini kerana blueprint ini mampu untuk menghasilakan rangka(scaffold) Model, Controller, View dan lain-lain dengan pantas.
Perlu diingatkan bahasa blueprint ini dikhaskan untuk Laravel. Berikut adalah cara install
composer require -W --dev laravel-shift/blueprint
Kemudian buatkan 1 fail bernama draft.yaml dan berikut adalah contoh format models:
# monday,tuesday,..., sunday
RefDayOfWeek:
name: string
desc: text nullable
relationships:
hasMany: OperationHour,CourtPricing
softDeletes
# holiday,
RefBookingCategory:
name: string
desc: text nullable
relationships:
hasMany: Booking
softDeletes
# day,night
RefRateType:
name: string
desc: text nullable
relationships:
hasMany: CourtPricing
softDeletes
# new,pending,completed,rejected
RefBookingStatus:
name: string
desc: text nullable
relationships:
hasMany: Booking
softDeletes
# paid,unpaid,void
RefInvoiceStatus:
name: string
desc: text nullable
relationships:
hasMany: Invoice
softDeletes
# manual, payment gateway
RefPaymentMethod:
name: string
desc: text nullable
relationships:
hasMany: Payment
softDeletes
# pending,paid,failed,reject
RefPaymentStatus:
name: string
desc: text nullable
meta: json nullable
relationships:
hasMany: Payment
softDeletes
User:
name: string
email: string unique
password: string
softDeletes
relationships:
hasMany: Booking, Cart
Court:
name: string
desc: text nullable
rate: decimal(10,2)
min_booking_hours: integer
max_booking_hours: integer
min_days_advance_booking: integer
max_days_advance_booking: integer
softDeletes
relationships:
hasMany: Booking, CourtPricing, OperationHour, CourtHoliday
# every courd have own hour
OperationHour:
court_id: id foreign:courts.id
ref_day_of_week_id: id foreign:ref_day_of_week.id
open_time: time
close_time: time
desc: text nullable
softDeletes
relationships:
belongsTo: Court, RefDayOfWeek
# pricing base on RefRateType (day/night timing duration)
CourtPricing:
court_id: id foreign:courts.id
ref_rate_type_id: id foreign:ref_rate_types.id
ref_day_of_week_id: id foreign:ref_day_of_week.id
start_time: time
end_time: time
rate: decimal(10,2)
desc: text nullable
softDeletes
relationships:
belongsTo: Court, RefRateType, RefDayOfWeek
Cart:
user_id: id foreign:users.id
desc: text nullable
metadata: string nullable
softDeletes
relationships:
belongsTo: User
hasMany: CartItem
CartItem:
cart_id: id foreign:carts.id
court_id: id foreign:courts.id
starts_at: datetime
ends_at: datetime
rate: decimal(10,2)
amount: decimal(10,2)
desc: text nullable
softDeletes
relationships:
belongsTo: Cart, Court
Booking:
user_id: id foreign:users.id
ref_booking_category_id: id foreign:ref_booking_categories.id
total_amount: decimal(10,2)
ref_booking_status_id: id foreign:ref_booking_statuses.id
desc: text nullable
metadata: string nullable
softDeletes
relationships:
belongsTo: User, RefBookingStatus,RefBookingCategory
hasMany: BookingDetail, Invoice
BookingDetail:
booking_id: id foreign:bookings.id
court_id: id foreign:courts.id
starts_at: datetime
ends_at: datetime
rate: decimal(10,2)
amount: decimal(10,2)
desc: text nullable
softDeletes
relationships:
belongsTo: Booking, Court
Invoice:
booking_id: id foreign:bookings.id
invoice_number: string
amount: decimal(10,2)
ref_invoice_status_id: id foreign:ref_invoice_statuses.id
desc: text nullable
softDeletes
relationships:
belongsTo: Booking, RefInvoiceStatus
hasOne: Payment
Payment:
invoice_id: id foreign:invoices.id
ref_payment_method_id: id foreign:ref_payment_methods.id
amount: decimal(10,2)
payment_date: timestamp
ref_payment_status_id: id foreign:ref_payment_statuses.id
desc: text nullable
softDeletes
relationships:
belongsTo: Invoice, RefPaymentMethod, RefPaymentStatus
seeders: User, Court, OperationHour, ... & berikutnya
ini adalah contoh syntax untuk menghasilkan migration & model bagi sistem tempahan berserta relation yang berkenaan.
Untuk maklumat lanjut, anda boleh layarai dokumentasi rasmi mereka di https://blueprint.laravelshift.com/docs/generating-components/