Migration به منظور مدیریت جداول در لاراول هست و به شما این امکان رو می ده که حتی با داشتن دانشی اندک درخصوص مدیریت دیتابیس و پایگاه داده بتونید بانک اطلاعاتی پروژه خودتون رو ایجاد کنید. برای یاد گیری این مبحث با ما همراه باشید.
پس از ورود به فولدر پروژه به دایرکتوری database/migrations برید . همانطور که قابل مشاهده هست ، خود لاراول به صورت پیش فرض دو migration برای جدول users که حاوی اطلاعات کاربران و password_resset که به منظور استفاده از تغییر کلمه عبور در هنگام فراموشی رمز عبور رو ارائه کرده است.
وارد migration جدول users شوید، همانطور که مشاهده می کنید هر migtation از دو متد up که برای ایجاد جداول و down که برای حذف جداول هست تشکیل شده است.
در متد up اولین مقدار ورودی نام جدول و دومین مقدار ورودی استفاده از کلاس Blueprint جهت ایجاد فیلد ها در جدول می باشد.
در migration جدول users یک فیلد id به صورت auto increment ، یک فیلد با نام name به صورت رشته برای ذخیره نام کاربر، یک فیلد email به صورت رشته و منحصر بفرد برای هر کاربر به منظور ثبت ایمیل، فیلد password به صورت رشته 60 کاراکتری جهت ثبت کلمه عبور کاربر، فیلد remember_token جهت ثبت اطلاعات مربوط به ورود کاربر در سیستم و دو فیلدcreated_at و utdated_at که همان طور که از نامهایشان پیداست به منظور زمان ایجاد و زمان انجام تغییرات بر روی رکورد ایجاد شده است.
ایجاد migration
برای ایجاد یک migration کافیست که از طریق ترمینال خود به پوشه برنامه رفته و دستور زیر را وارد نمائید:
php artisan make:migration create_flights_table --create=flights
Command | Description |
---|---|
$table->bigIncrements(‘id’); | Incrementing ID (primary key) using a “UNSIGNED BIG INTEGER” equivalent. |
$table->bigInteger(‘votes’); | BIGINT equivalent for the database. |
$table->binary(‘data’); | BLOB equivalent for the database. |
$table->boolean(‘confirmed’); | BOOLEAN equivalent for the database. |
$table->char(‘name’, 4); | CHAR equivalent with a length. |
$table->date(‘created_at’); | DATE equivalent for the database. |
$table->dateTime(‘created_at’); | DATETIME equivalent for the database. |
$table->decimal(‘amount’, 5, 2); | DECIMAL equivalent with a precision and scale. |
$table->double(‘column’, 15, 8); | DOUBLE equivalent with precision, 15 digits in total and 8 after the decimal point. |
$table->enum(‘choices’, [‘foo’, ‘bar’]); | ENUM equivalent for the database. |
$table->float(‘amount’); | FLOAT equivalent for the database. |
$table->increments(‘id’); | Incrementing ID (primary key) using a “UNSIGNED INTEGER” equivalent. |
$table->integer(‘votes’); | INTEGER equivalent for the database. |
$table->json(‘options’); | JSON equivalent for the database. |
$table->jsonb(‘options’); | JSONB equivalent for the database. |
$table->longText(‘description’); | LONGTEXT equivalent for the database. |
$table->mediumInteger(‘numbers’); | MEDIUMINT equivalent for the database. |
$table->mediumText(‘description’); | MEDIUMTEXT equivalent for the database. |
$table->morphs(‘taggable’); | Adds INTEGER taggable_id and STRING taggable_type. |
$table->nullableTimestamps(); | Same as timestamps(), except allows NULLs. |
$table->rememberToken(); | Adds remember_token as VARCHAR(100) NULL. |
$table->smallInteger(‘votes’); | SMALLINT equivalent for the database. |
$table->softDeletes(); | Adds deleted_at column for soft deletes. |
$table->string(’email’); | VARCHAR equivalent column. |
$table->string(‘name’, 100); | VARCHAR equivalent with a length. |
$table->text(‘description’); | TEXT equivalent for the database. |
$table->time(‘sunrise’); | TIME equivalent for the database. |
$table->tinyInteger(‘numbers’); | TINYINT equivalent for the database. |
$table->timestamp(‘added_on’); | TIMESTAMP equivalent for the database. |
$table->timestamps(); | Adds created_at and updated_at columns. |
$table->uuid(‘id’); | UUID equivalent for the database. |
من برای ایجاد فیلد در migration جدول flights از دستورات زیر استفاده کرده ام
$table->increments('id');
$table->string('name');
$table->string('airline');
$table->timestamps();
حال به ترمینال خود بازگشته و دستور زیر را وارد نمائید:
php artisan migrate
حالا به بانک اطلاعاتی خود بروید، همانطور که مشاهده می کنید چهار جدول flights,users,password_resset و migration ایجاد شده است.لازم به توضیح است که جدول migration جهت نگهداری آخرین تغییرات migration ها می باشد.
اضافه کردن فیلد به جداول با استفاده از migration
برای اضافه کردن فیلد به migration ها مشابه دستور زیر در ترمینال خود استفاده کنید:
php artisan make:migration add_votes_to_users_table --table=users
بررسی وجود جدول و یا فیلد در migration
if (Schema::hasTable('users')) {
//
}
if (Schema::hasColumn('users', 'email')) {
//
}
تغییر نام و حذف جداول در migration
Schema::rename($from, $to);
Schema::drop('users');
Schema::dropIfExists('users');
ایجاد مقدار پیش فرض برای فیلدها در جداول
گاهی اوقات ممکن است برخی فیلدها در جداول مقداری رو در هنگام ایجاد رکورد به صورت پیش فرض در خود ذخیره کنند. درصورتیکه شما هم نیاز به چنین فیلدی داشتید، از دستور زیر استفاده کنید:
Schema::table('users', function ($table) {
$table->string('email')->default($value);
});
Schema::table('users', function ($table) {
$table->string('email')->nullable();
});
تغییر نام و یا حذف فیلدهای جداول در migration
در طول توسعه یک پروژه گاهاً پیش میاد که باید تغییراتی در فیلدهای جداول ایجاد کنید و یا نام اونها رو تغییر بدید، این امکان نیز از طریق migration ها ایجاد شده که اگر شما هم خواستید تغییراتی رو روی فیلدها اعمال کنید از روش زیر استفاده کنید:
Schema::table('users', function ($table) {
$table->renameColumn('from', 'to');
});
Schema::table('users', function ($table) {
$table->dropColumn('votes');
});
Schema::table('users', function ($table) {
$table->dropColumn(['votes', 'avatar', 'location']);
});
ایجاد و یا حذف فهرست ها در جداول
در migration ها امکان اضافه کردن فیلدهایی با شرایط کلید اصلی، منحصربه فرد بودن، فهرست شدن و … وجود دارد که برای ایجاد آن می بایست به صورت زیر عمل شود:
Command | Description |
---|---|
$table->primary(‘id’); | Add a primary key. |
$table->primary([‘first’, ‘last’]); | Add composite keys. |
$table->unique(’email’); | Add a unique index. |
$table->index(‘state’); | Add a basic index. |
و برای حذف اونها هم از دستورات زیر استفاده کنید:
Command | Description |
---|---|
$table->dropPrimary(‘users_id_primary’); | Drop a primary key from the “users” table. |
$table->dropUnique(‘users_email_unique’); | Drop a unique index from the “users” table. |
$table->dropIndex(‘geo_state_index’); | Drop a basic index from the “geo” table. |
موفق و پیروز باشید.
0 دیدگاه در “آموزش لاراول؛محبوب ترین فریم ورک پی اچ پی -7”