یلدا ادامه داره... ❤️ ۴۰ درصد تخفیف همه دوره‌ها

استفاده از تخفیف‌ها
ثانیه
دقیقه
ساعت
روز
آموزش Migration ها در لاراول
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 5 دقیقه

آموزش Migration ها در لاراول

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 .

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

با تشکر .  

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
5 از 1 رای

/@hesammousavi
حسام موسوی
طراح و برنامه نویس

بیشتر از ۱۵ سال هست که در حال برنامه‌نویسی و انجام پروژه های مختلف هستم و ۱۰ سالی هست که آموزش برنامه‌نویسی به علاقمندان حوزه برنامه نویسی میدیم در همه این مدت الان عاشق کدزنی و چالش‌های پروژه‌های مختلفم. به تدریس علاقه خاصی دارم و دوست دارم دانشی که در این راه بدست آوردم را در اختیار دیگران هم قرار بدم. 

دیدگاه و پرسش

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

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید