تجاوز $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 قوي بس لو فاهم أدواته.
المدونة
يوليو 27, 2025
🔍 ما هي Array.fromAsync() بالضبط؟ Array.fromAsync() هي دالة static من كائن Array، شبيهة بالدالة Array.from()، لكن الفرق الجوهري هو أن Array.fromAs...
يوليو 24, 2025
🧠 يعني إيه Dynamic Import؟ الديناميـك إمبورت ببساطة هو إنك تحمّل ملف أو موديول JavaScript "وقت الحاجة بس" مش من أول الصفحة. الميزة دي بتقلل حجم ال...
يوليو 07, 2025
إتقان التحقق الشرطي في Laravel 12 في Laravel 12، نظام التحقق (validation) قوي جدًا، وميزة التحقق الشرطي بتخليك تتحكم في القوانين بتاعتك ب...
يوليو 01, 2025
🚫 وقّف نسخ الكود! لو عندك نفس المنطق في كذا Model أو Controller زي Slug أو Logging، Traits في Laravel هتوفر عليك تعب الكتابة والتكرار. 1. إيه هو...
سبتمبر 13, 2025
لو محتاج تبعت إشعارات Push من تطبيق Laravel سواء للموبايل أو للويب، فالحل الأسرع والأبسط هو إنك تستخدم Notifire اللي بيربط Laravel مباشرةً مع Fireba...
يونيو 17, 2025
تحديث Laravel 12.18.0 صدر نسخه Laravel 12.18.0 فيها شوية ميزات جامدة كده: توابع لتشفير وفك تشفير النصوص باستخدام Stringable ديركت في chain strings...