دسته بندی :
تاریخ انتشار : ۱۴ اردیبهشت ۱۳۹۴
گردآوری و تالیف : حسام موسوی

کارمو با طراحی گرافیکی شروع کردم و حدود 2 سال طراحی گرافیکی میکردم بعد به طراحی وب علاقه پیدا کردم و همراه طراحی وب عاشق کدنویسی شدم به PHP | sass | css | Jquery | javaScript تسلط کامل دارم . در بین فریم ورک های PHP اول با CodeIgniter کار کردم اما به laravel علاقه مند شدم و دارم بطور حرفه ای دنبالش میکنم . امید من اینکه بتونم کاربرهای ایرانی رو به دنیای بیرون متصل کنم تا بتونن از فناوری های تازه آگاهی داشته باشن

Database Migrations در لاراول

اینو بگم که لاراولی که برای معرفی Migration ازش استفاده میکنیم نسخه 5 می باشد . 

لاراول توسط Taylor Otwell توسعه پیدا کرده و یکی از بزرگترین فریمورک های php  می باشد و هم برای پروژه ای کوچیک و هم برای پروژه های در مقیاس بزرگ قابل استفاده است و همینطور دارای یه جامعه بزرگی از توسعه دهنده ها هم می باشد . من با لاراول حدود 1سال پیش زمانی که تو گوگل "بهترین فریمورک پی اچ پی" رو سرچ میکردم آشنا شدم و بعد چند ماه شروع به استفاده از اون کردم و از آشنایی با لاراول اصلا پیشمون نیستم هیچ ، خیلی خیلی هم خوشحالم . 

خب بریم سراغ معرفی اجزایی قدرتمند لاراول از جمله : یک سیستم مسیریابی قدرتمند و انعطاف پذیر، Eloquent ORM ، دارای بخشی برای احراز هویت ، موتور قالب سازی Blade ، ابزار رابط خط فرمان به اسم Artisan ، یک query ساز سازنده و گویا . ( منو ببخشید اگه تو این لیست چیز دیگه ای رو جا گذاشتم).

خب حالا بریم سراغ Migrations در لاراول : 

Migrations در لاراول یه راه آسون رو برای مدیریت پایگاه داده نرم افزار شما فراهم میکنه . وقتی شما از Migrations استفاده میکنید بسیار از وظایف database schema رو میتونید به سادگی هر چه تمام تر آنجام بدید . با استفاده از Migrations شما میتونید جداول دیتابیستونو به راحتی ایجاد و تغییر بدید بصورتی که دیگه از دست mysql به کل خلاص بشین و اگه بلد نباشین مشکلی براتون بوجود نیاد . 

راه اندازی Migrations : 

قبل از اینکه ما بخواین اولین migration خودمونو بسازیم ما نیاز داریم یه جدول به اسم migration تو بانک اطلاعاتیمون داشته باشیم تا اسم جدول های که بوجود میاریم یا عملیات دیگه توش ذخیره بشه . شما اینکارو میتونید با وارد کردن دستور artisan migrate:install در خط فرمان خودمتون انجام بدید . 

┌─[usm4n@usm4n-desktop]―[~/laravel5]
└─•artisan migrate:install
Migration table created successfully

بوجود آوردن جداول دیتابیسمون با استفاده از Migration :

در حال حاضر  ، فرض کنید ما میخوایم یه جدول برای برنامه امون تو پایگاه داده بسازیم به اسم 'articles' . اولین چیزی که ما نیاز داریم ایجاد یه کلاس با نام 'articles' ( البته عملا شما هر اسمی میتونید براش انتخاب کنید ) و قرار دادن اون تو کلاس و بعد قرار دادن فایل کلاس در بخش Migration پروژمون که این بخشو در /Database/Migrations قرار داره . 

عصبی نشید اصلا احتیاج به این همه کار نیست . ما این کارا رو میتوین فقط با دستور artisan make:migration articles --table=articles در خط فرمان انجان بدیم .

┌─[usm4n@usm4n-desktop]―[~/laravel5]
└─•artisan make:migration articles --table=articles
Created Migration: 2015_05_04_223728_articles
Generating optimized class loader

بخشی ‘2015_05_04_223728′ یه مهر زمانی برای فایله که به عنوان بخشی از اسم فایل رو فایل قرار میگیره . که بعدا تو سیستم migration برای پیگیری تغییرات ازش استفاده میشه . بنابراین به شما توصیه میشه که حتما برای بوجود آوردن کلاس migration  از دستور بالا استفاده کنید . 

کد تولید شده تو فایل بالایی که ساختیم یه چی شبیه کد پایینه : 

در واقع با این کد ها باعث تغییرات در پایگاه دادمون میشیم ، ما با استفاده از دستور  artisan migrate در خط فرمان متد up از همه ای کلاس های Migration که در دایرکتوری database/migrations قرار داره رو فراخونی میکنه . و اگه بخوایم همه کارایی رو که کردیم برگشت بدیم به سادگی از دستور  artisan migrate:rollback در خط فرمان استفاده میکنیم کار این دستور اینکه متد Down که تو Migration هامون وجود داره رو فراخونی میکنه . معمولا کد های که تو Down نوشته میشه جنبه حذف داره .  بنابراین ما با استفاده از متد های up و Down عملیات لازمی که برای جداول تهیه دیدیم رو اجرا میکنیم . 

برای دیدن تابع های Schema که لاراول تهیه کرده میتونید به این صفحه مراجعه کنید (اینجا)

خب حالا کدی که ما برای migration Articles نیاز داریم :

بعد از تغییرات تو فایل migration Articles ما نیاز داریم تا اونو اجرایی کنیم به همین خاطر از دستور artisan migrate در خط فرمان استفاده میکنیم و بعد از کامل شدن ، جدول ما باید یه چیزی شبیه شکل زیر باشه.

mysql> describe articles;
+-------------+------------------+------+-----+---------------------+----------------+
| Field       | Type             | Null | Key | Default             | Extra          |
+-------------+------------------+------+-----+---------------------+----------------+
| id          | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| title       | varchar(50)      | NO   |     | NULL                |                |
| description | varchar(255)     | NO   |     | NULL                |                |
| created_at  | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
| updated_at  | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
+-------------+------------------+------+-----+---------------------+----------------+
5 rows in set (0.00 sec)

همونطور که قبلا نوشتم آجرای دستور  artisan migrate:rollback باعث میشه که متد down تو کلاس های migration فراخونی بشن . بنابراین هر چیزی که تو کلاس های migration  و تو این متد ها استفاده بشه هم قابل اجرا هم قابل بازگشت است . 

کد زیر رو ببینید :

renameColumn('description','explanation');
        });
    }
 
    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::table('articles', function(Blueprint $table)
        {
            $table->renameColumn('explanation','description');
        });
    }
 
}

 

هنگامی که ما migration بالا رو با استفاده از دستور  artisan migrate مورد استفاده قرار میدیم . نام ستون ‘description’ به ‘explanation’ پیدا میکنه . بطور مشابه با استفاده از دستور artisan migrate:rollback نام ستون از ‘explanation’ به ‘description’ تغییر پیدا میکنه . تعجب نکردین که چقدر ساده میشه کارامون با استفاده از migration .

خب از شما دوستان عزیز ممنونم که تا اینجایی این مقاله همراه ما بودید . اگه نظر ،پیشنهاد ، انتقادی از ما دارید خوشحال میشیم که اونو تو بخش نظرات باهامون در میون بزارید . 

با تشکر .  

برچسب : , ,

دیدگاه های مخاطبین

ثبت دیدگاه شما
  • حسام

    درود بر شما, عالی هستید,

  • محمدرضا

    ممنون از زحماتتون . بسیار عالی بود. فقط میشه به جای migration از همون mysql استفاده کرد؟

    • محمدرضا

      خیلی ممنون لطفا ادامه بدید . وبسایت خیلی خوبی هم دارید موفق باشید

    • admin

      سلام ، بله میشه اما با migration میاد کاراتونو خیلی خیلی ساده میکنه یعنی دیتابیس هاتون که با migration آماده شد وقتی پروژه تونو تو هاست آپلود کردین خودش بطور خودکار دیتابیستونو رو میسازه و پروژتون آماده به کار میشه . برای همین migration خیلی بهتر از نوشتن mysql و پیشنهاد میکنم حتما migration کار کنی وگرنه مشکلی نداره میتونی mysql هم کار کنی .

پیشنهاد میکنیم این مطالب رو هم مطالعه کنید :