با عرض سلام و خسته نباشید
یادم هست که جناب موسوی برای این سوال من در آموزش لاراول فروشگاهی یه راه حلی ارائه داده بودن ولی یادم نمیاد تو کدوم قسمت بود برای همین مجبور شدم اینجا سوالم رو مطرح کنم.
من یه table دارم توی دیتابیسم که می خوام یه column به اسم company_id بهش اضافه کنم. ازونجایی که company_id نباید nullable باشه و من توی table اطلاعات دارم و نمی خوام که اون اطلاعات پاک بشه مایگریشنم انجام نمیشه و اررور می ده. اگه فیلد رو nullable بزارم اوکیه و انجام میشه ولی خب من نمی خوام nullable باشه. راه حل چیه که بدون پاک شدن اطلاعاتم این کار انجام بشه ؟
public function up()
{
Schema::table('tasks', function (Blueprint $table) {
$table->unsignedInteger('company_id')->nullable()->after('id');
$table->foreign('company_id')
->references('id')
->on('companies')
->onDelete('cascade');
});
}
الان به nullable زدم رفت بالا اوکی شد ولی خب این چیزی نیست که مد نظرمه
وقت بخیر
میتونی یه مقدار default بهش بدی مثلا 0.
public function up()
{
Schema::table('tasks', function (Blueprint $table) {
$table->unsignedInteger('company_id')->default(0)->after('id');
$table->foreign('company_id')
->references('id')
->on('companies')
->onDelete('cascade');
});
}
@smartgarden2016
اخه اونم باز کار درستی نیست. چون من شاید company با id برابر با 0 نداشته باشم اصلا و در جاهای دیگه برنامه به اررور خواهم خورد با این کار و فقط خود من روی پروژه کار نمی کنم. شاید مثلا من company با id برابر با 1 داشته باشم ولی همکار دیگم که رو پروژه کار می کنه نداشته باشه و اون به اررور بخوره. یا وقتی آپدیت شد پروژه و رفت روی سرور کلا سایت به یه باگ بخوره به همین خاطر. نمی دونم اصلا راه حلی برای این مشکلات وجود داره یا نه :(
من اون راه رو گفتم که ابتدای کار null نذاری. راه حل پیشنهادی من اینه که مقدار default رو یه id بذاری که توی جدول company باشه. به این شکل همه taskها مربوط به یه company میشن. بعدا بیای taskها رو ویرایش کنی و مقدار company_idهای هرکدوم که اونی که میخوای بذاری. البته اگه تعداد taskها الان زیاد نیست.
حالا شاید دوستان روش دیگه ای بلد باشن. ما هم استفاده میکنیم.
راه حل من اینه که بیاین یک مقدار پیش فرض یا نالیبل بذارین بعد اطلاعات رو بریزین اگه از همهچی مطمئن شدین بعد با یک مایگریشن دیگه ستون تغییر بدین و از حالت پیش فرض یا نالیبل درش بیارین
سلام . سه تا کار میشه انجام داد
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟