چطوری میشه بگیم که اگه این مورد تکراری شد در دیتابیس ذخیره نکن و به ادامه کار رو انجام بده ارور نده
مثلا ما فیلد title در دیتابیس داریم به صورت دستی اولین بار aliرو میگیره دومین بار هم ali رو میگیره اما دخیره نمیکنه چون وجود داره و کار رو ناتمام نمیگذاره و سومین بار reza رو میگیره
چطوری این موارد تکراری رو حذف کنم لطفا با مثال
نگاه کن توی لاراول دوتا راه واسه این مشکل گذاشن
یکی اینکه چک میکنه اگه رکورد از قبل بودش آپدیتش میکنه
روش دوم میگه اگه بود بیخیال شو ولش کن
روش ۱:
InfoModel::updateOrCreate(['title'=>trim($e2)],[
'bazdid'=>$eeee,
'date'=>$rrr,
//'link_id'=>$op
]);
روش ۲:
InfoModel::firstOrCreate(['title'=>trim($e2)],[
'bazdid'=>$eeee,
'date'=>$rrr,
//'link_id'=>$op
]);
دقیقا اینجا همه چی هست https://laravel.com/docs/5.7/eloquent
سه تا گزینه دارید:
از سمت SQL میتونی فیلد هارو داخل Migration از نوع unique تعریف کنی
برای PHP هم چیزی شبیه زیر:
Class PostController extends Controller
{
public function store(Post $post)
{
if (Post::where('title', $post->title)->exists())
{
abort(404,'title exists in database');
}
if ($validationPasses)
{
// create a new post
}
}
}
خوب از این متد برای اینجا استفاده کن
Model::updateOrCreate(['title' => $request->title], [
'title' => $request->title,
'text' => $request->text,
'description' => $request->description,
]);
@ali.bayat
@code2code
درسته.
من میخواهم زمانی که تکراری بود ذیگه ارور نده بره و کار بعدیشو انجام بده ولی زمانی که از این ها استفاده میکنم ارور میده و به مرحله بعدی نمیره
چیزی که من نوشتم ارور نمیده اگه فیلد تکراری باشه ردیف با همون عنوان رو آپدیتش میکنه
ضمنا اگه میخوای ادامه مبده میتونی داخل if هیچی نذاری خوب...
if($exists){
}else{
//code
}
//code
اقا مهدی ببخشید هر کاری کردم نشد
این کد من هست کجا باید این کارو بکنم
$u=InfoModel::create([
'title'=>trim($e۲),
'bazdid'=>$eeee,
'date'=>$rrr,
//'link_id'=>$op
]);
این کد من است این شرط رو کجا ی این دستور قرار بدم
نگاه کن توی لاراول دوتا راه واسه این مشکل گذاشن
یکی اینکه چک میکنه اگه رکورد از قبل بودش آپدیتش میکنه
روش دوم میگه اگه بود بیخیال شو ولش کن
روش ۱:
InfoModel::updateOrCreate(['title'=>trim($e2)],[
'bazdid'=>$eeee,
'date'=>$rrr,
//'link_id'=>$op
]);
روش ۲:
InfoModel::firstOrCreate(['title'=>trim($e2)],[
'bazdid'=>$eeee,
'date'=>$rrr,
//'link_id'=>$op
]);
دقیقا اینجا همه چی هست https://laravel.com/docs/5.7/eloquent
@ali.bayat
@RaymondDragon
@mohsenbostan
@Alimotreb
@hesammousavi
@code2code
@gharibe.ashna2012
@masoudproton
@Arshavir
این کارو کردم نشد باز id تغییر میکند
منظورم اینکه هر دفعه رکوردها آپدیت میشه idرکورد ها رو از عدد یک شماره گزاری کنه نه مثلا ۱۰۰ یا ۲۵و...
دیوونه شدم تا یه تابع درب و داغون واسشون نوشتم.......
دو روز دیر دیدم این تاپیکو....
آقا مهدی و بقیه بنازم..... ای ول....... خدا خیرتون بده.....
@code2code
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟