راکت

اعمال تغییرات یک ماگریشن روی جدول مربوطه در دیتا بیس

14 پاسخ

سلام
بعد از اعمال تغییرات یک روی ماگریشن چه دستوری را باید استفاده کنیم تا تغییرات روی جدول مربوطه در دیتا بیس اعمال شود؟
با تشکر.

ثبت پرسش جدید

پاسخ‌ها

14
Igo
Igo
@Igo

دستور زیر تمامی Migration ها را بر روی دیتابیس اجرا میکند
php artisan migrate

سید رضا موسوی
سید رضا موسوی
@rmtonliner

تخصص: برنامه

خب بعضی وقت ها ایجاد نمیکنه، و میگه اون ماگریشن جدولش ساخته شده

شاید پاسخ شما همین‌جا باشد

سید رضا موسوی
سید رضا موسوی
@rmtonliner

تخصص: برنامه

C:\wamp64\www\laravel\test1>php artisan migrate

In Connection.php line 664:

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'categories' already exists (SQL: cre
ate table categories (id int unsigned not null auto_increment primary key, name varchar(191) n
ot null, slug varchar(191) not null, created_at timestamp null, updated_at timestamp null) def
ault character set utf8mb4 collate utf8mb4_unicode_ci)

مهدی
مهدی
@code2code

اگه موقع ایجاد جدول اروری چیزی داده که جدول نصفه ایجاد شده باید اون جدول رو دستی از دیتابیس حذف کن
یا در غیر این صورت اگه میخوای تغییری ایجاد کنی

php artisan migrate:rollback --database[=DATABASE]

یا

php artisan migrate:rollback --step[=STEP]

و اگه میخوای ستونی چیزی به جدول اضافه کنی یا حذف کنی میتونی یه فایل migration جدید بسازی و با اون ستون رو به جدول اضافه یا کم کنی

مهدی
مهدی
@code2code

آخر جواب منو بخون :))

amin karimi
amin karimi
@amin66.karimi

php artisan make:migration add_new_field_totablr —table=post
دستور بالا ميتوني فيلد جديد به جدول پست ارسال كني بدونه اينكه اطاعات قبلي از بين بره

programming_code80
programming_code80
@code80

تخصص: برنامه نویس بک اند وب

توضیح تصویر رو وارد کنید
سلام دوست عزیز @amin66.karimi
خسته نباشید

سوالم داخل تصویر هست
من میخوام این تغییر رو بدم که
؛ فقط این جدول کتگوریز ؛ فقط این قسمتش رو در دیتابیس تغییر بده ؛
و بقیه ی اطلاعات ثبت شده در دیتابیس رو پاک نکنه
ولی نمیدونم چه دستوری استفاده کنم

مهدی
مهدی
@mahdidv

تخصص: Backend Developer

برای ایجاد تغییرا ت باید پکیج زیر رو که برای خود لاراول هست رو نصب کنید

composer require doctrine/dbal

بعد از نصب یک migration برای جدولی که میخوای تغییر بدی ایجاد میکنید به این اسم

 artisan make:migration update_category_table  --table=categories

بعد دستور زیر رو مینویسی

Schema::table('categories', function (Blueprint $table) {
$table->foreignId('category_id')->constrained()->change();
});

مرحله آخرم php artisan migrate
فقط خودتون تایپ کنید چون شاید اشتباه تایپی داشته باشم

programming_code80
programming_code80
@code80

تخصص: برنامه نویس بک اند وب

@mahdidv
نه متاسفانه ؛ تغییری نکرد
اول این پکیجی که شما گفتید رو ساختم

بعد دستوراتی که گفتید وارد کردم
تغییری نکرد ؛ اینم تصویرش ؛ توضیحات بیشتر تو تصویر گفتم

توضیح تصویر رو وارد کنید

توضیح تصویر رو وارد کنید

مهدی
مهدی
@mahdidv

تخصص: Backend Developer

php artisan make:migration update_category_table --table=categories

با این دستور جدول رو ایجاد کن و مراحل بعدی حتما درست میشه
تو دستور قبلی جدول رو ارتباط نداده بودم برای همین کار نکرد

programming_code80
programming_code80
@code80

تخصص: برنامه نویس بک اند وب

@mahdidv
ممنونم دوست عزیز ؛ از وقتی که میزاری ؛ دم شما گرم
متاسفانه جواب نداد ؛ و تغییری نکرد

توضیح تصویر رو وارد کنید

و جدولی در دیتابیس ساخته نشد ؛و فیلدی از جدول کتگوریز تغییر نکرد

این کار با ماگریشن ها و جداول دیتابیس ؛ وقتی داریم با لاراول کار میکنیم ؛ اموزشی چیزی نداره ؟؟

مهدی
مهدی
@mahdidv

تخصص: Backend Developer

خواهش میکنم
ببین وقتی change میکنی تو دیتابیس جدول اضافه نمیشه بلکه فیلدی که نوشتی تغییر میکنه
شما قبلا فیلد categoryid رو که nullable بوده با دستور change از حالت nullable در اوردین و کاملا درست انجام شده.
منظور از اینکه تغییر نکرده چیه؟
شما میخوایید فیلیدی اضافه کنید؟ یا اونو ویرایش کنید
این مستنداتش هست:
https://laravel.com/docs/5.3/migrations

programming_code80
programming_code80
@code80

تخصص: برنامه نویس بک اند وب

@mahdidv
ممنونم عالی بود ؛ گرفتم چی شد ؛ راست می گین ؛ دستتون دردنکنه
میخواستم پیام تون رو لایک کنم ؛ متاسفانه نشد ؛ تجربه ام باید بالای 4000 باشه

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

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