في عالم تطوير الويب المتسارع، أصبح الذكاء الاصطناعي جزءًا لا يتجزأ من سير العمل اليومي للمطورين. لكن المشكلة التي كانت تواجه مطوري Laravel دائمًا هي أن أدوات الذكاء الاصطناعي لم تكن تفهم سياق المشروع بشكل كامل، مما يؤدي إلى اقتراحات غير دقيقة أو كود لا يتوافق مع معايير Laravel الحديثة.
هنا يأتي دور Laravel Boost - الأداة الرسمية الجديدة من فريق Laravel التي تغير قواعد اللعبة تمامًا.
Laravel Boost هي حزمة رسمية من Laravel تعمل كجسر ذكي بين مشروعك والذكاء الاصطناعي. بدلاً من أن يعمل المساعد الذكي بشكل عشوائي، تمنحه Boost فهمًا عميقًا لبنية مشروعك بالكامل - من Models والـ Routes وصولاً إلى Schema قاعدة البيانات والـ Relationships بين الجداول.
النتيجة؟ اقتراحات برمجية دقيقة ومطابقة تماماً لمعايير Laravel، وكأن لديك مطور Laravel محترف يساعدك في كل سطر كود.
قبل ظهور Boost، كان المطورون يواجهون تحديات عديدة عند استخدام أدوات الذكاء الاصطناعي مع Laravel، منها:
Laravel Boost تحل كل هذه المشاكل من خلال توفير سياق كامل (Context) للذكاء الاصطناعي عن مشروعك.
تعتمد Laravel Boost على بروتوكول MCP (Model Context Protocol) الذي يسمح للذكاء الاصطناعي بالوصول إلى معلومات محددة عن مشروعك بطريقة آمنة ومنظمة. عند تثبيت Boost في مشروعك، تقوم بما يلي:
بهذا الشكل، عندما تطلب من الذكاء الاصطناعي كتابة كود معين، سيكون لديه صورة واضحة تماماً عن مشروعك ويقدم حلولاً دقيقة وقابلة للتطبيق فوراً.
عملية تثبيت Laravel Boost في غاية السهولة ولا تستغرق سوى دقائق معدودة. إليك الخطوات:
أولاً، بتثبيت الحزمة عبر Composer كـ dependency للتطوير فقط:
bashcomposer require laravel/boost --dev
ثانياً قم بتشغيل أمر التثبيت لإعداد الأداة:
bashphp artisan boost:install
بعد ذلك، ستكون جاهزاً لاستخدام أي مساعد ذكي يدعم بروتوكول MCP، مثل Cursor أو Claude Code أو GitHub Copilot أو غيرها من الأدوات المتوافقة.
مثال 1: إنشاء Controller مع فهم كامل للـ Models
بدون Laravel Boost:
عندما تطلب من الذكاء الاصطناعي: "اكتب لي controller لعرض المنتجات مع الفئات"
قد يقترح عليك:
phppublic function index()
{
$products = Product::with('category')->get();
return view('products.index', compact('products'));
}لكن المشكلة هنا أن الـ AI لا يعرف أن اسم الـ relationship في مشروعك هو categories وليس category، أو أن لديك scope اسمه active يجب استخدامه.
مع Laravel Boost:
نفس الطلب سينتج كوداً دقيقاً:
phppublic function index()
{
$products = Product::with('categories')
->active()
->latest()
->paginate(15);
return view('products.index', compact('products'));
}لاحظ كيف فهم الـ AI أن:
مثال 2: كتابة Migration بناءً على Schema الموجود
بدون Laravel Boost:
تطلب: "اضف جدول orders مرتبط بـ users"
قد تحصل على:
phpSchema::create('orders', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')->constrained();
$table->decimal('total', 8, 2);
$table->timestamps();
});مع Laravel Boost:
ستحصل على migration يتوافق مع معايير مشروعك:
phpSchema::create('orders', function (Blueprint $table) {
$table->id();
$table->foreignId('user_id')
->constrained()
->onDelete('cascade');
$table->decimal('total_amount', 10, 2);
$table->enum('status', ['pending', 'processing', 'completed', 'cancelled'])
->default('pending');
$table->string('order_number')->unique();
$table->timestamp('ordered_at')->useCurrent();
$table->timestamps();
$table->softDeletes();
});لاحظ أن Boost فهم من مشروعك:
مثال 3: كتابة Query معقد مع Relationships
بدون Laravel Boost:
تطلب: "اعرض كل المستخدمين الذين لديهم طلبات في آخر شهر"
قد تحصل على:
php$users = User::whereHas('orders', function($query) {
$query->where('created_at', '>=', now()->subMonth());
})->get();مع Laravel Boost:
php$users = User::with(['orders' => function ($query) {
$query->whereBetween('ordered_at', [
now()->subMonth()->startOfDay(),
now()->endOfDay()
])->select('id', 'user_id', 'order_number', 'total_amount', 'status');
}])
->whereHas('orders', function ($query) {
$query->whereBetween('ordered_at', [
now()->subMonth()->startOfDay(),
now()->endOfDay()
]);
})
->withCount('orders')
->orderByDesc('orders_count')
->get();Boost فهم من مشروعك:
مثال 4: إنشاء Form Request مع Validation Rules
بدون Laravel Boost:
تطلب: "اعمل validation لتحديث بيانات المنتج"
قد تحصل على:
phppublic function rules()
{
return [
'name' => 'required|string|max:255',
'price' => 'required|numeric',
'description' => 'nullable|string',
];
}مع Laravel Boost:
public function rules()
{
return [
'name_ar' => 'required|string|max:255',
'name_en' => 'required|string|max:255',
'description_ar' => 'nullable|string|max:1000',
'description_en' => 'nullable|string|max:1000',
'price' => 'required|numeric|min:0|max:999999.99',
'discount_price' => 'nullable|numeric|min:0|lt:price',
'category_id' => 'required|exists:categories,id',
'sku' => [
'required',
'string',
'max:50',
Rule::unique('products', 'sku')->ignore($this->product)
],
'stock_quantity' => 'required|integer|min:0',
'is_active' => 'boolean',
'images' => 'nullable|array|max:5',
'images.*' => 'image|mimes:jpeg,png,jpg|max:2048',
];
}Boost عرف من database schema:
مثال 5: كتابة API Resource
بدون Laravel Boost:
تطلب: "اعمل API resource للمنتج"
قد تحصل على:
phppublic function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->name,
'price' => $this->price,
'created_at' => $this->created_at,
];
}مع Laravel Boost:
phppublic function toArray($request)
{
return [
'id' => $this->id,
'name' => $this->getTranslation('name', app()->getLocale()),
'description' => $this->getTranslation('description', app()->getLocale()),
'price' => [
'amount' => (float) $this->price,
'formatted' => number_format($this->price, 2) . ' ' . config('app.currency'),
'discount' => $this->discount_price ? [
'amount' => (float) $this->discount_price,
'formatted' => number_format($this->discount_price, 2) . ' ' . config('app.currency'),
'percentage' => round((($this->price - $this->discount_price) / $this->price) * 100),
] : null,
],
'sku' => $this->sku,
'stock' => [
'quantity' => $this->stock_quantity,
'available' => $this->stock_quantity > 0,
'status' => $this->getStockStatus(),
],
'category' => new CategoryResource($this->whenLoaded('categories')),
'images' => ImageResource::collection($this->whenLoaded('images')),
'is_active' => (bool) $this->is_active,
'created_at' => $this->created_at?->toIso8601String(),
'updated_at' => $this->updated_at?->toIso8601String(),
];
}Boost فهم من المشروع: