الأداة firstOrCreate للتعامل مع قواعد البيانات في لارافيل

الأداة firstOrCreate للتعامل مع قواعد البيانات في لارافيل

2024-03-04 وقت القراءه : 1 دقائق

تخيل أنه نريد إضافة مقالة إلى قاعدة البيانات، لكن نريد بداية أن نتأكد أن الإسم موجود أم لا، وللقيام بذلك فإننا نستخدم

$article = Article::where('title', $request->title)->first();
 if (!$article) {
     $article = Article::create($request->all());
 } else {
     return 'Article exist';
 }

 

لكن يمكننا تبسيط الكود أعلاه بإستخدام firstOrCreate.

Article::firstOrCreate(
     ['title' => $request->title],
     ['body' => $request->body]
 );

 

إذا أردنا تعديل عنوان المقال في قاعدة البيانات اذا كان موجود، وإن لم يكن موجود أن يتم إضافتة.

$article = Article::where('title', $request->title)->first();
 if ($article) {
     $article->update(['body' => $request->body]);
 } else {
     $article = Article::create([
         'title' => $request->title,
         'body' => $request->body,
         'user_id' => auth()->id,
     ]);
 } 

لكن يمكننا تبسيط الكود أعلاه أيضاً بإستخدام firstOrCreate.

Article::updateOrCreate([
     'title'=>$request->title,
     'body'=>$request->body,
     'user_id'=>auth()->id
 ]); 

لكن إذا كان لدينا أكثر من where مثلا نريد التحقق اذا كانت المقالة موجود لمستخدم معين، اذا كانت موجوده أن يتم التعديل عليها إن لم تكن موجوده أن يتم إضافتها.

Article::updateOrCreate(
     [
         'title' => $request->title,
         'user_id' => auth::user()->id
     ],
     ['text' => $request->text]
 ); 

التعليقات
زائر
منذ سنتين

Extremely important, save time and efforts.

إضافة تعليق
Loading...