تجاوز $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 قوي بس لو فاهم أدواته.

المدونة

استخدام useCallback في React: الفوائد، القيود، والممارسات المثالية

يوليو 31, 2025

Hook useCallback في React يُستخدم لإنشاء نسخة ثابتة من دالة (callback) بحيث لا يُعاد إنشاؤها إلا إذا تغيرت الـ dependencies المحددة. الهدف الأساسي م...

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

يوليو 02, 2025

تجاوز $fillable بأمان باستخدام forceFill() في Laravel جربت تستخدم create() في Laravel ولاقيت إن حقول زي role أو status مش بتتحفظ؟ ده بسبب حماية Larav...

شرح مفصل لكل هوك في React

يوليو 01, 2025

🎣 شرح React Hooks وبأمثلة عملية 🧠 useState بيعمل إيه: بيضيف حالة داخلية (state) جوا أي مكون شغال بوظيفة. مثال عملي: import React, { useSta...

كيف تجعل موقعك "سريع جداً" خطوة بخطوة

يوليو 30, 2025

لماذا السرعة ليست رفاهية؟ في زمن الضغط والسرعة، ما فيش حد عنده وقت يستنى موقع يحمّل! المستخدمين على الموبايل بينسحبوا من الموقع إذا ما فتحش في أق...

تذكير بالمهام مع Laravel وMongoDB

يونيو 30, 2025

📌 بناء تطبيق تذكير مهام المقال ده بيشرح إزاي نعمل تطبيق Laravel يستخدم MongoDB علشان يذكرك بالمهمات بتاعتك، مع تسجيل دخول، CRUD، وتذكير بالإيميلات...

إتقان CSS الحديثة: قوة if()، Popover Hints، والتنسيقات الذكية

يوليو 16, 2025

🌐 إتقان CSS الحديثة: قوة if()، Popover Hints، والتنسيقات الذكية CSS دلوقتي بقت أذكى بكتير. دالة if()، وميزة popover="hint"، وازاي نكتب تنسيقات متج...