1masoud
5 سال پیش توسط 1masoud مطرح شد
7 پاسخ

تکراری بودن فیلد در دیتابیس

@ali.bayat
@Alimotreb
من ۸۰ هزار رکورد در mysqlدارم می خواهم یک کاری کنم که دیگه فیلد تکراری ذخیره نکنه باید چیکار کنم ایا باید از گزینه یونیکد یا index در mysqlاستفاده کنم یا کار دیگه ای کنم میشه راهنمایی کنید


ثبت پرسش جدید
علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

@masoudproton
این کار هم میتونه در سمت دیتابیس انجام بشه. و هم میشه با PHP انجام داد. برای دیتابیس index بذارید و ترکیب unique رو به کار ببرید. با PHP هم که باید چک کنید ببینید اگر رکورد در جدول موجوده دیگه اضافه نکنید


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@ali.bayat
الان من indexبگذارم ایراد میگیره چون از قبل رکوردهای تکراری دارم
میشه با مثال بگید


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

@masoudproton
Migration چیزی شبیه به زیر میشه:

    Schema::create('my_table', function(Blueprint $table) {
        $table->increments('id');
        $table->string('name');
        $table->string('email', 255);
        $table->timestamps();
        $table->unique(['name', 'email']);
    });

اما اگر از قبل داده در جدول دارید، یا باید با php این کارو بکنید و یا جدول رو از اول بسازید با داده های جدید


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@ali.bayat
من این کد
if (DetailsModel::where('link' != $li1))
{.........
رو از قبل نوشته بودم تا لینک های تکراری رو ذخیره نکنه اما یکسری جاها نگاه میکنم تکراری هست و یکی هم این که زمانی رکوردهای ما تعدادش بیشتر بشه نمیتونه این کارو بکنه مثلا ۱۰۰۰۰۰ تا لینک باشه تا بخواهد ببینه که این بین ۱۰۰۰۰۰ تا تکراری هست یا نه خیلی زمان میخواد


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

درسته اما شما که احتیاج ندارین ۱۰۰۰۰۰ کوئری بزنید . شما ۱ کوئری میزنید که چک کنه آیا همچین سطری در جدل هست یا نه

User::where('mobile', Input::get('mobile'))->exists()

و یا

$user = User::where('mobile', Input::get('mobile'))->first(); // model or null
if (!$user) {
   // Do stuff if it doesn't exist.
}

و یا حتی


try {
    $user = User::where('mobile', Input::get('mobile'))->firstOrFail();
    // Do stuff when user exists.
} catch (ErrorException $e) {
    // Do stuff if it doesn't exist.
}

نوع محافظت شما برای وارد نشدن داده تکراری به نوع نوشتن کد هاتون هم بر میگرده. موفق باشید


1masoud
تخصص : php,laravel
@masoudproton 5 سال پیش مطرح شد
0

@ali.bayat
این یعنی چی
Input::get('mobile'))->first()


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

@masoudproton
این Input Facade هست. نمونه کد قدیمیه . در حال حاظر از request بجاش استفاده میشه


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام