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 .
خب از شما دوستان عزیز ممنونم که تا اینجایی این مقاله همراه ما بودید . اگه نظر ،پیشنهاد ، انتقادی از ما دارید خوشحال میشیم که اونو تو بخش نظرات باهامون در میون بزارید .
با تشکر .
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید