تجاوز $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 قوي بس لو فاهم أدواته.
المدونة
يوليو 20, 2025
🔧 1. لارافيل 12.0 – ستارتر كيتس وتعديلات أساسية إصدار 12.0 جاب Starter Kits جاهزة للـ React، Vue، Livewire، وكمان دمج مع WorkOS AuthKit،...
يناير 27, 2026
مقدمة يُعد React Native من أكثر الأطر استخدامًا في تطوير تطبيقات الهواتف الذكية متعددة المنصات. ومع ذلك، ظل وقت بناء تطبيقات iOS أحد أكبر التحديا...
يوليو 28, 2025
🚀 الجديد في React Native 0.80 بالتفصيل الإصدار React Native 0.80 يعتبر نقطة تحول حقيقية في عالم تطوير تطبيقات الموبايل باستخدام React Native. التح...
يوليو 26, 2025
1. البدايات: النشأة داخل Facebook في عام 2011، واجه مهندسو Facebook تحديًا متزايدًا في صيانة واجهات المستخدم المعقدة والتفاعلية. تم تطوير مكتبة د...
يونيو 26, 2025
ألوان في CSS - شرح مبسّط النهارده هنتكلم عن الألوان في CSS: ازاي بنحددها، وخصوصًا الطرق الحديثة زي lab() وoklch(). 1. يعني إيه لون؟ مفيش حاجة اسم...
يونيو 26, 2025
مقارنة CSS: Cascade Layers و BEM و Utility Classes المقالة بتتكلّم عن ٣ طرق لإدارة الـ specificity في CSS – BEM والـ utility‑first classes وك...