تجاوز $fillable بأمان باستخدام forceFill() في Laravel

يوليو 2, 2025

تجاوز $fillable بأمان باستخدام forceFill() في Laravel

جربت تستخدم create() في Laravel ولاقيت إن حقول زي role أو status مش بتتحفظ؟ ده بسبب حماية Laravel ضد mass assignment اللي بتتجاهل أي حقول مش موجودة في الـ whitelist.

🔐 إيه هو Mass Assignment؟

ده وسيلة لتملىء أكتر من خاصية في الموديل مرة واحدة، زي:

User::create([
  'name' => 'أحمد',
  'email' => '[email protected]',
  'role' => 'admin', // مش هيتسجل لو مش موجود في fillable
]);

🛡️ إزاي تتحكم في الحقول اللي تتكتب أو لا؟

1. $fillable (الـ whitelist)

protected $fillable = ['name', 'email'];

بس الحقول اللي بتحطها هنا مسموح تكتبها بكده.

2. $guarded (الـ blacklist)

protected $guarded = ['role'];

كل الحقول مسموح بيها إلا اللي مكتوبة هنا.

⚡ تعال نشوف forceFill()

لما تكون واثق إن الداتا آمنة (زي سِيدرز، جوبز، أو عمليات خلفية)، تقدر تستخدم:

$user = new User;

$user->forceFill([
  'name' => 'أحمد',
  'email' => '[email protected]',
  'role' => 'admin', // هيتسجل حتى لو مش في fillable
])->save();

محتاجش تعدل في $fillable أو $guarded، وسهل وآمن لما تستخدمه صح.

✔️ إمتى تستخدم كل طريقة؟

  • $fillable: للتعامل مع بيانات من المستخدم زي الفورم أو API.
  • $guarded: لو عندك موديل فيه حقول كتير ومش عايز تحطهم كلهم في fillable.
  • forceFill(): للـ backend logic وداتا موثوقة منك أنت بنفسك.

لو استخدمت create() من غير ما تبقى فاهم آلية الحماية دي، هتشوف مشاكل في missing fields. Laravel قوي بس لو فاهم أدواته.

المدونة

React Labs: View Transitions وActivity

يونيو 17, 2025

React Labs: View Transitions وActivity المنشور اتكتب يوم 23 أبريل 2025 من Ricky Hanlon. في React Labs النهارده بيقدّموا ميزتين تجريبيّتين مودرن...

إتقان التحقق الشرطي في Laravel 12

يوليو 07, 2025

إتقان التحقق الشرطي في Laravel 12 في Laravel 12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك ب...

إتقان التكرار غير المتزامن في JavaScript باستخدام Array.fromAsync()

يوليو 27, 2025

🔍 ما هي Array.fromAsync() بالضبط؟ Array.fromAsync() هي دالة static من كائن Array، شبيهة بالدالة Array.from()، لكن الفرق الجوهري هو أن Array.fromAs...

Laravel 12.21.0 – تحديث ذكي لتسهيل الاستعلامات والتحقق الصارم للبيانات

أغسطس 03, 2025

أصدرت Laravel النسخة 12.21.0 بمزايا برمجية هامة تساهم في كتابة كود أنظف وأسهل في الصيانة. من أهمها دالة whereValueBetween() الجديدة، بالإضافة إلى...

نظام طوابير Laravel واستخدام Supervisor في الإنتاج

يوليو 01, 2025

🚀 نظام Queue & Jobs في Laravel هناخدك خطوة خطوة من أول إنشاء الجداول لحد ما تشغّل الطوابير في Production عن طريق Supervisor. الخطوة 1: إنشاء...

أحدث مميزات ECMAScript 2025

يونيو 30, 2025

أحدث مميزات ECMAScript 2025 في 25 يونيو 2025، تم اعتماد ES2025 رسميًا. الإضافات الجاية هتسهل عليك كتابة الكود: 1. 📦 Import Attributes و JSON Module...