استخدام whereHas في لارافل

تُوفر طريقة whenHas في لارافيل طريقة ممتازة لتنفيذ التعليمات البرمجية بناءً على وجود المدخلات في الطلبات.

هذه الميزة مفيدة بشكل خاص في معالجة الحقول الاختيارية والتحديثات الشرطية، مما يقلل من الحاجة إلى عمليات التحقق المتكررة من الوجود.

يبرز هذا النهج بشكل خاص في إرسال النماذج، فعلى سبيل المثال، عندما يختار المستخدم الاشتراك في إشعارات البريد الإلكتروني، قد تحتاج إلى التحقق من صحة التفضيلات ذات الصلة بالبريد الإلكتروني وتخزينها.

// Simple presence check
 
$request->whenHas('name', function ($name) {
// Process name when present
});
إليك مثال على تفضيلات الإشعارات:
// app/Controllers/PreferencesController.php
<?php
 
namespace App\Http\Controllers;
 
use App\Models\UserPreferences;
use Illuminate\Http\Request;
 
class PreferencesController extends Controller
{
 
public function update(Request $request, UserPreferences $preferences)
 
{
$request->whenHas('email_frequency',
function ($frequency) use ($preferences) {
$preferences->update([
'email_frequency' => $frequency,
'last_email_update' => now()
]);
}
);
 
$request->whenHas('push_enabled',
function ($enabled) use ($preferences) {
$preferences->update([
'push_enabled' => $enabled,
'push_updated_at' => now()
]);
},
function () use ($preferences) {
$preferences->update([
'push_enabled' => false,
'push_updated_at' => now()
]);
}
);
 
return response()->json([
'message' => 'Preferences updated successfully',
'preferences' => $preferences->fresh()
]);
}
}
مثال على الاستخدام:
// Input with some preferences
 
{
"email_frequency": "weekly"
}
 
// Response
 
{
"message": "Preferences updated successfully",
"preferences": {
"email_frequency": "weekly",
"last_email_update": "2024-02-01T10:30:00.000000Z",
"push_enabled": false,
"push_updated_at": "2024-02-01T10:30:00.000000Z"
}
}
تُبسط طريقة whenHas معالجة الطلبات الشرطية مع الحفاظ على بنية كود نظيف وقابلة للقراءة.

جميع الحقوق محفوظة © 2025 Laravel | عربي