تخيل أنه نريد إضافة مقالة إلى قاعدة البيانات، لكن نريد بداية أن نتأكد أن الإسم موجود أم لا، وللقيام بذلك فإننا نستخدم
$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.