migration در Yii2

migration امکانی است که برای توسعه یا حفظ پروژه هایی که پایگاه داده محور هستند , استفاده می شود.
برای درک بهتر این موضوع به این مثال توجه کنین:
فرض می کنیم یک پروژه ی نسبتا بزرگ داریم
برای انجام این پروژه پس از تجزیه و تحلیل نیاز ها, تعدادی جدول در پایگاه داده ی خود می سازیم.
در حین انجام پروژه متوجه میشیم که به جداول دیگه ای نیاز داریم , همچنین ممکنه که تعدادی از جداولمونو حذف کنیم
ممکنه که در برخی جداول از ستون ها بکاهیم یا ستون جدیدی به آن ها اضافه کنیم.
فرض میکنیم در حین پروژه یکی از برنامه نویسایی که داریمو از دست میدیم.
و از یه برنامه نویس دیگه ای که اصلا با این پروژه کار نکرده استفاده میکنیم.
تغییراتی که بر روی دیتابیس انجام شده از ابتدا تا انتها و تغییراتی که این برنامه نویس جدید داره اعمال میکنه باید یه جوری بهشون دسترسی داشته باشیم .migration دقیقا هین کار رو میکنه. کلیه تغییرات بر روی دیتابیس رو مدیریت میکنه و در هنگام نیاز شما میتوانین به هر نسخه از تغییرات دسترسی داشته باشین.
دقیقا کاری که سورس کنترل انجام میده .
خوب فریم ورک Yii مجموعه ای از دستورات زیر را برای مدیریت میگریشن شما فراهم میکنه:

create new migrations;
apply migrations;
revert migrations;
re-apply migrations;
show migration history and status.

برای شروع کامپوزر خود را در مسیر پروژه باز نمایید .
با استفاده از دستور yii help migrate می تونین با راهنمایی که خود فریم ورک قرار داده آشنا بشین.

اول اینکه سینتکس ایجاد migration به شکل زیر می باشد:

yii migrate/create name

که name اسم جدول یا میگریشنی هست که شما می خواهید آن را ایجاد نمایید.
به عنوان مثال برای ایجاد جدولی با نام user دستور زیر را وارد میکنیم:

yii migrate/create create_users

هنگامی که شما enter را میزنید پیامی به شما میدهد که با n یا y میتوانید آن را تایید یا کنسل کنین. پس از تایید میگریشن شما ایجاد می شود و پیام success داده می شود.
پس از انجام دستور بالا در مسیر console/migrations فایلی با نام m160328_175909_create_users.php ایجاد میشود که حاوی محتوای زیر می باشد

use yii\db\Migration;
class m160328_175909_create_users extends Migration
{
    public function up()
    {
        $this->createTable('users', [
            'id' => $this->primaryKey()
        ]);
    }
    public function down()
    {
        $this->dropTable('user');
    }
}

کلاس ایجاد شده دارای دو متد اصلی است به نام های up و down
به طور کلی برای تغییرات در ساختار جدول از up و برای حذف جدول از down استفاده میشود.
در کد بالا در داخل متود up ما با استفاده از createTable نام جدولمون رو مشخص کردیم که به صورت پیش فرض دارای ستون id به عنوان کلید اصلیه جدولمون می باشد.
در صورتی که بخواهیم ستونی اضافه کنیم در همین محل این کار را انجام میدهیم
برای مثال من دو ستون دیگه اضافه میکنم

 $this->createTable('users', [
            'id' => $this->primaryKey(),
   'title' => $this->string()->notNull(),
            'content' => $this->text()->notNull(),
        ]);

دو ستون به نام های title , content به همراه دیتاتایپشون ایجاد کردم
پس جدول من یه id یه title و به content داره

خوب برای اجرای باید از کد زیر استفاده کنیم

yii migrate

با کد بالا جدول users با ستون هایی که ما مشخص کردیم ایجاد می شود .

همچنین میتوانید با استفاده از نام متد , متد دلخواه خود را اجرا کنید.
کد بالا درواقع به صورت اتومات متد up را اجرا میکند

yii migrate/up

برای مثال برای حذف جدول از کد زیر استفاده میکنیم

yii migrate/down

این داستان ادامه دارد ….

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *