• 0

ما فائدة استخدام المصفوفة fillable في لارافل؟

ما الفائدة من استخدام المصفوفة fillable في كل مودل؟

مثال:

class user extends Model{

	protected fillable = ['username', 'avatar', 'website_link'];

	....
}

ولماذا يتم استخدامها دوماً في المودل؟ هل يحدث خطأ في حال عدم استخدامها؟

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

المصفوفة fillable ليست إجبارية و إنما يتم إستخدامها في حالة أردنا إتاحة التعيين الجماعي لبعض الحُقول و في هذه الحالة يتم وضع هذه الحقول بداخل هذه المصفوفة.

يمكن استخدام التابع create لحفظ سجل جديد في سطر وحيد. لكن قبل القيام بذلك، يجب أن تُعيّن أحد الخاصيات fillable بسبب حماية نماذج Eloquent افتراضيًّا من التعيين الجماعي.

لنفترض أنه لديك النموذج User والخاصية name و أردت إنشاء كائن من هذا النموذج ثم تخزينه في قاعدة البيانات فيُمكنك ذلك كالتالي:

public function store(Request $request)
{

  // تحقق من الطلب..

  $user = new User;
  $user->name = $request->name;
  $user->save();
}

بهذا الشكل أنت لم تستخدم التعيين الجماعي و في هذه الحالة لست بحاجة لإستخدام المصفوفة fillable. أما إن قمت بالعملية بهذا الشكل:

$user = User::create(['name' => 'John Doe']);

فسيتم رمي إستثناء من النوع MassAssignmentException و السبب هنا أنك تستخدم التعيين الجماعي و لارافل ستقوم بحمايتك. الآن إن أردت أن تحمي نفسك بنفسك و تُلغي تفعيل حماية لارافل ستستخدم المصفوفة fillable او guarded فالمصفوفة fillable هي بمثابة القائمة البيضاء نضع بها الحقول التي نسمح بتعيينها جماعياً و guarded عكسها.

هناك عدة توابع أخرى يُمكن إستعمال التعيين الجماعي معها منها update، firstOrCreate  و غيرها ..

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 0

نحدد من خلالها الأعمدة القابلة للتعبئة,لاحظ رجاء السطر التالي

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

فمثلا لو كانت Request تحتوي فقط على name و email و password فإن Request ستعمل دون مشاكل وسوف يتم تعبئة الأعمدة الخاصة بهذه الخصائص الموجودة في Request
ولكن لو كان مع Request خاصية أخرى مثل username فستحصل على مشكلة MassAssignmentException  لأن username غير موجودة في مصفوفة fillable

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن