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

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

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


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

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


pooria83
pooria83
@pjalili835 سال پیشمطرح شد
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
Saman
تخصص :برنامه نویس وب
@samanzdev5 سال پیشمطرح شد
0

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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


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

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