N a s r F o l i o

الخصائص fillable$ و guarded$ في Laravl Model

/

 لفرض أن لدينا الموديل التالي

class Article extends Model{}

 ولدينا الجدول التالي

public function up(){
    Schema::create('articles'function (Blueprint $table{
        $table->id();
        $table->string('title');
        $table->text('text');
        $table->timestamps();
    });
 }

 ولدينا هذا الفورم

 كيف يمكن إدخال البيانات في قاعدة البيانات؟

 للقيام بذلك يمكن إستخدام عدة طرق

 الطريقة الأولى

public function store(Request $request)
 {
    $article new Article();
    $article->title = $request->title;
    $article->text = $request->text;
    $article->save();
}

 

 لكن ماذا لو إنه لدينا 10 حقول وأكثر هل يجب أن نكتبها واحدة واحدة؟ الجواب هو لا حيث يمكن إدخالها كما يلي:

public function store(Request $request){
    Article::create($request->all());
 }

 لكن إستخدام الطريقة أعلاه سوف يسبب المشكله التالية

Illuminate\Database\Eloquent\MassAssignmentException
Add [_token] to fillable property to allow mass assignment on [App\Models\Article].

 الخطأ أعلاه يعني أننا نحاول إدخال حفظ token في قاعدة البيانات، مع العلم أنه يأتي كحقل مخفي

<form method="post" action="{{  route('article.store') }}">
      @csrf

 

 ولتجنب ذلك يجب أن نحدد الحقول التي يجب إدخالها في الـ Model كـ fillable

class Article extends Model{
    protected $fillable = [ 'title''text'];
 }

 وهذا يعني أنه فقط الحقول المحددة كـ fillable هي من سيتم إدخالها.

 لكن السؤال ماذا لو إنه لدي 10 حقول وأكثر هل يجب كتابتها جميعها؟

 الجواب هو لا، بل يمكن إستخدام $guard حيث يتم تحديد الحقول التي لا يجب إدخالها في قاعدة البيانات.

protected $guarded = ['id'];

 بمعنى أن $fillable هي عكس $guard

 

 في النهاية هذه المقالة مقدمه من مهندس ايثار شروف بارك الله له

لينك موقعه الرسمي : https://www.etharshrouf.com/ 



أعجبني


!!يجب عليك تسجيل الدخول لكتابة تعليقك!!

بعض البوستات الاخري

/
ما هو لارافيل observers
/
Introduction to Hardware مقدمة فى الهاردوير
/
لا تستخدم Query Builder مع Soft Deletes
التصميم
الالوان
الوضع النهاري والليلي