احمد نادری

توسعه دهنده فول استک

author
author

احمد نادری

توسعه دهنده فول استک

تغییرات دیتابیس با migrataion در لاراول

تغییرات دیتابیس به صورت دستی یکی از بدترین نوع کار در بک اند هست چون مثلا اگه چند نفر به صورت همزمان روی پروژه کار کننده برای هر تغییر کوچیک در دیتابیس باید به همه اطلاع بدید که اونا هم اونو اعمال کنند . مثلا فرض کنید شما از جدول یوزر ستون name  رو به صورت دستی اضافه میکنید . خب حالا بقیه اعضای پروژه هم باید برن به صورت دستی اونو داخل پروژشون اضافه کنند !

برای حل این مشکل در لاراول ما میایم از migration استفاده میکنیم .

php artisan make:migration create_flights_table

خب یک کلاس وجود داره که دارای دو تابع up و down  هست .

متود up شامل تمام تغییرات یا ستون های جدیدی است که به محض اجرا کردن مایگریشین روی دیتابیس اعمال میشود.متود down زمانی اجرا میشود که دستور rollback  اجرا گردد معمولا هر انچه که درون این متود هست معکوس متود up میباشد.برای مثال

 public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->timestamps();
        });
    }
public function down()
    {
        Schema::drop('posts');
    }

عملیات در سطح جدول :‌

  • create  که وظیفه ی ساختن یک جدول جدید را برعهده دارد
  • drop که وظیفه ی حذف کردن کلی یک جدول را بر عهده دارد.
  • dropIfExists این تابع همان تابع drop است با این تفاوت که موجود بودن جدول را ابتدا چک میکند.
  • rename نام یک جدول را تغییر میدهد.

عملیات در سطح ستون ها :‌

  •  dropColumn($columns) این تابع ستون یا ستون هایی را از جدول پاک میکند اگر ستون بیش از یک مورد باشد باید بصورت آرایه ارائه شود.
  • renameColumn(‘from’, ‘to’);  از این تابع برای تغییر نام یک ستون در جدول استفاده میشود.

عملیات در سطح ایندکس جداول :‌

  • primary($columns) این تابع برای مشخص کردن کلید اصلی جدول یا همان primary key تعریف میشود.
  • unique($columns) این تابع برای مشخص کردن unique بودن یک ایندکس جدول استفاده میشود
  • index($columns) از این تابع برای تعریف کردن یک index به جدول استفاده میشود.
  • foreign($columns) از این تابع برای تعریف کردن کلید خارجی یا foreign key استفاده میشود
  • dropPrimary($index) از این تابع برای حذف کردن primary key استفاده میشود
  • dropUnique($index) از این تابع برای حذ ف کردن unique استفاده میشود
  • dropIndex($index) از این تابع برای حذف کردن index جدول استفاده میشود
  • dropForeign($index) از این تابع برای حذف کردن foreign key استفاده میشود

دستور migrate:rollback

با این دستور به مرحله ی قبلی مایگریشین باز میگردید یعنی هر تغییری که بعنوان آخرین تغییر توسط مایگریشین اعمال شده است به حالت قبل از آن برمیگردد

دستور migrate:reset

با این دستور تمام مایگریشین های اجرا شده به حالت اول باز میگردد. این دستور همان دستور migrate:rollback برای همه ی مایگریشین هاست.

دستور migrate:refresh

این دستور تمام مایگریشین ها را به حالت اول بازمیگرداند یعنی همان دستور migrate:reset را اجرا میکند و سپس تمام مایگریشین ها را مجددا اعمال میکند که همان دستور migrate است. به عبارتی همه تغییرات پایگاه داده را پاک میکند و دوباره میسازد.


مثال تغییر نام ستون وایجاد ستون جدید :

$table->renameColumn('phone', 'sender');
$table->string('messageid',12)->unique()->after('id');

 

درباره من
  • سلام به وب سایت من خوش اومدید ! از سال 1388 که وارد دنیای برنامه نویسی شدم تجربیات خودم رو از پروژه های مختلف به دست آوردم و همیشه سعی کردم تا مهارت های فنی و رفتاری خودم رو ارتقا بدم تا بتونم برای خودم و سازمانی که در آن کار می کنم بهترین باشم . من عاشق یادگیری هستم و همیشه از چالش های جدید هیجان زده میشم چون اونارو کلید موفقیت و رشد خودم می دونم.
  • @ahmadnaderi01
arrow