لفرض أن لدينا الموديل التالي
{}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
شرح رائع ومبسط
Id esse qui repudi
جزاك الله خيرا ❤❤❤
جزاك الله خيرا
تسلم
أيهما أكثر أمناً ؟
زائر
يعطكم العافية