سلام همان طور که در پست های قبلی اشاره کرده بودم یک آموزش کامل از نحوه ایجاد و مدیریت دیتابیس توسط Migration در لاراول را
آماده کردم که خدمت همه عزیزان تقدیم می کنم :
Migration ها به شما این اجازه را می دهند که دیتابیس خود را بدون مراجعه به ابزارهای کمکی مثل phpmyadmin مدیریت کنید .
یعنی برای ایجاد و مدیریت جداول و همچنین تغییرات در بانک اطلاعاتی میتوانید از migration ها استفاده کنید .


با این روش شما دیگر احتیاجی به نوشتن دستورات Sql ندارید و از دستورات زیر برای طراحی و مدیریت بانک اطلاعاتی استفاده نماپید .

برای کار با دیتابیش از طریق Mygration Laravel ابتدا یک بانک اطلاعاتی در DBMS خود مثلا Mysql خود با ابزارهای مانند Phpmyadmin ایجاد نماپید . چرا که این روش برای همه دیتابیس های درگیر با لاراول قابل اجرا می باشد و صرفا برای Mysql نمی باشد .

بعد از ایجاد بانک اطلاعاتی به مسیر app/config/database.php  بروید و کد زیر را ویرایش کنید

در صورتی که از Mysql استفاده می کنید :

'mysql' => array(
'driver' => 'mysql',
'host' => 'localhost',
'database' => 'نام دیتابیس ایجاد شده',
'username' => 'نام کاربری شما',
'password' => 'رمز عبور شما',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),

سپس نوبت به ایجاد و مدیریت جداول بانک اطلاعاتی می رسد

در مرحله اول ابتدا یک mygration برای جدول مورد نظر ایجاد می کنیم مثلا جدولی با عنوان Posts

با اجرای این دستور در ترمینالو در شاخه اصلی پروژه خود میتوانید migration جدولی به اسم Posts  ایجاد کنید :

php artisan migrate:make create_posts_table

به عبارت create_ در ابتدا و _table در انتهای نام جدول دقت نماپید که شما نیز در طراحی جداول می بایست از این عبارات در ابتدا و انتهای mygration استفاده نماپید .
بعد از وارد کردن دستور فوق یک فایل در آدرس app/database/migrations/ برای شما ایجاد می شود .

در فایل ایجاد شده عبارت زیر به صورت اتوماتیک ایجاد می شود .

class CreateTestTable extends Migration {

	/**
	 * Run the migrations.
	 *
	 * @return void
	 */
	public function up()
	{
		// قسمت اول
	}

	/**
	 * Reverse the migrations.
	 *
	 * @return void
	 */
	public function down()
	{
		// قسمت دوم
	}

}

در کد ایجاد شده دو قسمت می باشد که قسمت اولیه در مرحله صدا زدن مستقیم migration اجرا می شود و قسمت دوم در زمان صدا زدن به عنوان بازگشتی (rollback) استفاده می شوند .

حال برای ایجاد بانک اطلاعاتی از دستوراتی استفاده می کنیم که در این قسمت با یک مثال توضیح می دهم :

Schema::create('posts', function(Blueprint $table)
        {
            $table->bigIncrements('id');
            $table->string('title');
            $table->string('slug');
            $table->text('content');
            $table->string('type', 40)->index();
            $table->bigInteger('user_id')->unsigned();
            $table->boolean('is_published')->default(false);
            $table->timestamps();
            $table->foreign('user_id')->references('id')
                ->on('users')
                ->onDelete('cascade')
                ->onUpdate('cascade');

            $table->index(['title', 'slug']);
        });

bigIncrements : زمانی که بخواهیم یک فیلد با نوع عدد بزرک به صورت increment (شماره گذاری خود کار ) ایجاد کنیم .
string : برای زمانی که بخواهیم یک فیلد از نوع string ایجاد کنیم و در پارامتر دوم مقدار کاراکتر را وارد می کنیم .
text : زمانی که بخواهیم یک فیلد از نوع متن طولانی را ایجاد نماپیم .
integer : زمانی که بخواهیم یک فیلد از نوع عدد ایجاد نماپیم .
bigInteger : زمانی که بخواهیم یک فیلد از نوع عددبزرگ ایجاد نماپیم .
boolean : برای ایجاد فیلد های از نوع انتخابی true / false می باشد .
timestamps : برای ایحاد فیلد های زمانی کنترل زمان ارسال و مدیریت سطر های بانک اطلاعاتی می باشد .
برای ایجاد یک ارتباط (Relation) با جداول دیگر از کد foreign استفاده می کنیم که با references فیلد رابط و on نام جدول طرف دوم ارتباط را مشخص می کنیم onDelete و onUpdate مشخص می کنند که هنگام تغییرات روی سطر مبدا چه اتفاقی برای سطرهای سیار جدول ها که با جدول ارتباط دارند رخ دهد .
index : برای ایندکس کردن فیلد های جدول از این دستور استفاده می کنیم.

در مرحله بعد باید مشخص کنیم که در هنگام rollback یعنی قسمت دوم کد چه اتفاقی رخ بدهد به کد زیر دقت کنید :

Schema::drop('posts');

ما در اینجا مشخص کردیم که هنگام rollback جدول را کلا حذف نماید .

در مرحله بعد برای اجرای migraton های ایجاد شده از دستور زیر استفاده می شود :

php artisan migrate

برای بازگشت به تغییرات یک مرحله قبل می توانید از این دستور استفاده کنید:

php artisan migrate:rollback

و برای ریست کلی از این دستور :

php artisan migrate:reset

در پایان عرض کنم که لاراول به هیچ وجه شما را مجبور به استفاده از migration نمی کند و شما می توانید به همان روش های قبلی نیز بانک اطلاعاتی را ایجاد و مدیریت نماپید .

موفق باشید.