سید رضا موسوی
6 سال پیش توسط سید رضا موسوی مطرح شد
14 پاسخ

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

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


ثبت پرسش جدید
Igo
@Igo 6 سال پیش آپدیت شد
0

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


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

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


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

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 6 سال پیش مطرح شد
1

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

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

یا

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

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


سید رضا موسوی
تخصص : برنامه
@rmtonliner 6 سال پیش مطرح شد
مهدی
@code2code 6 سال پیش مطرح شد
0

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


amin karimi
@amin66.karimi 6 سال پیش مطرح شد
0

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


programming_code80
تخصص : برنامه نویس بک اند وب
@code80 2 سال پیش آپدیت شد
0

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

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


مهدی
تخصص : Backend Developer
@mahdidv 2 سال پیش آپدیت شد
0

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

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
تخصص : برنامه نویس بک اند وب
@code80 2 سال پیش آپدیت شد
0

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

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

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

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


مهدی
تخصص : Backend Developer
@mahdidv 2 سال پیش مطرح شد
0
php artisan make:migration update_category_table --table=categories

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


programming_code80
تخصص : برنامه نویس بک اند وب
@code80 2 سال پیش آپدیت شد
0

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

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

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

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


مهدی
تخصص : Backend Developer
@mahdidv 2 سال پیش مطرح شد
0

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


programming_code80
تخصص : برنامه نویس بک اند وب
@code80 2 سال پیش آپدیت شد
1

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


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

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