pooria83
4 سال پیش توسط pooria83 مطرح شد
12 پاسخ

ست کردن فیلد text به عنوان primary

سلام
برای جدولی که در حال حاضر موجود هستش یه migration ساختم و خواستم 2تا از فیلد ها رو primary بکنم به روش زیر
$table->primary(['title' , 'link_id']);
چون فیلد title از نوع text هستش خطایی میده که باید براش key length تعریف بشه.
سوالم اینه که این کار توی همین دستور قابل انجامه یا کار دیگه باید بکنم؟


ثبت پرسش جدید
Saman
تخصص : برنامه نویس وب
@samanzdev 4 سال پیش مطرح شد
0

سلام
اگه فیلد title از نوع text هستش نیاز به تعریف length نداره ، می تونید به همین روش که رفتید پیش برید.
@pjalili83


pooria83
@pjalili83 4 سال پیش مطرح شد
0

@samanzdev
متاسفانه با خطای زیر مواجه میشه
Syntax error or access violation: 1170 BLOB/TEXT column 'title' used in key specification without a key length (SQL: alter table news add primary key news_title_link_id_primary(title, link_id))


Saman
تخصص : برنامه نویس وب
@samanzdev 4 سال پیش آپدیت شد
0

یک عکس از کد هاتون بدید.
شما می خوایید فیلد title مثل فیلد id خود به خود پر بشه؟
@pjalili83


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

قصدت از این کار چیه؟


pooria83
@pjalili83 4 سال پیش آپدیت شد
0

@samanzdev
@ali.bayat
نه
من میخوام از ورود duplicate جلوگیری کنم.
اگر یه رکورد با یه title و linkid وارد شد دیگه رکورد مشابهی با این دو فیلد وارد نشه


Saman
تخصص : برنامه نویس وب
@samanzdev 4 سال پیش مطرح شد
0

خب می تونید این دو تا فیلد رو unique کنید
@pjalili83


pooria83
@pjalili83 4 سال پیش مطرح شد
0

@samanzdev
آخه ممکنه title مشابه باشه ولی link_id متفاوت.این از نظر منطق اون اپ مشکلی نیست.
اگر هر دو تکراری باشن مغایر با منطقه


Saman
تخصص : برنامه نویس وب
@samanzdev 4 سال پیش مطرح شد
0

متوجه منظورتون نشدم.
لطفا اگه میشه یه عکسی از کد هاتون بفرستید، به این شکل راحتتر میشه مشکلتون رو حل کرد.
@pjalili83


pooria83
@pjalili83 4 سال پیش مطرح شد
0

@samanzdev
کدوم بخش از کد ها مد نظرتون هست که ارسال کنم؟
فرض کنید یه رکورد داریم که link_id = 2 هستش و title=apple
حالا اگر یه رکورد جدید بخواد ذخیره بشه که link_id = 1 هستش و title=apple ایرادی نداره و میتونه ذخیره بشه.اما اگر link_id = 2 هستش و title=apple این رکورد تکراریه و نباید ذخیره بشه.


Saman
تخصص : برنامه نویس وب
@samanzdev 4 سال پیش مطرح شد
0

اوکی
خب شما می تونید فیلد link_id رو unique کنید.
@pjalili83


pooria83
@pjalili83 4 سال پیش مطرح شد
0

@samanzdev
بینیدفرض کنید یه رکورد داریم که link_id = ۲ هستش و title=apple
حالا اگر یه رکورد جدید بخواد ذخیره بشه که link_id = ۱ هستش و title=apple ایرادی نداره و میتونه ذخیره بشه.
همچنین اگر link_id=2 هستش و title=orange مشکلی نداره.
اما اگر link_id = ۲ هستش و title=apple این رکورد تکراریه و نباید ذخیره بشه.
اگر هر دو فیلد باهم تکراری باشن مغایر با اون منطقه.


pooria83
@pjalili83 4 سال پیش مطرح شد
0

شما ایده ای دارید برای حل این مشکل؟
@hesammousavi


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

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