نسخه:

طرحواره ساز

معرفی

کلاس لاراول Schema یک روش آگنوستیک پایگاه داده برای دستکاری جداول ارائه می کند. این به خوبی با تمام پایگاه های داده پشتیبانی شده توسط لاراول کار می کند و دارای یک API یکپارچه در همه این سیستم ها است.

ایجاد و رها کردن جداول

برای ایجاد یک جدول پایگاه داده جدید از Schema::create روش زیر استفاده می شود:

Schema::create('users', function($table)
{
$table->increments('id');
});

اولین آرگومان ارسال شده به create متد، نام جدول است، و دومی آرگومان است Closure که یک شی را دریافت می کند Blueprint که ممکن است برای تعریف جدول جدید استفاده شود.

برای تغییر نام جدول پایگاه داده موجود، rename ممکن است از روش زیر استفاده شود:

Schema::rename($from, $to);

برای تعیین اینکه عملیات طرحواره باید در کدام اتصال انجام شود، از Schema::connection روش زیر استفاده کنید:

Schema::connection('foo')->create('users', function($table)
{
$table->increments('id');
});

برای رها کردن جدول، می توانید از Schema::drop روش زیر استفاده کنید:

Schema::drop('users');
 
Schema::dropIfExists('users');

اضافه کردن ستون ها

برای به روز رسانی جدول موجود، از Schema::table روش زیر استفاده می کنیم:

Schema::table('users', function($table)
{
$table->string('email');
});

جدول ساز شامل انواع مختلفی از ستون ها است که می توانید هنگام ساخت جداول خود از آنها استفاده کنید:

فرمان شرح
$table->bigIncrements('id'); افزایش شناسه با استفاده از معادل "عدد صحیح بزرگ".
$table->bigInteger('votes'); BIGINT معادل جدول
$table->binary('data'); BLOB معادل جدول
$table->boolean('confirmed'); BOOLEAN معادل جدول
$table->char('name', 4); معادل CHAR با طول
$table->date('created_at'); DATE معادل جدول
$table->dateTime('created_at'); DATETIME معادل جدول
$table->decimal('amount', 5, 2); معادل اعشاری با دقت و مقیاس
$table->double('column', 15, 8); معادل دو برابر با دقت، در مجموع 15 رقم و 8 بعد از نقطه اعشار
$table->enum('choices', array('foo', 'bar')); ENUM معادل جدول
$table->float('amount'); FLOAT معادل جدول
$table->increments('id'); افزایش شناسه به جدول (کلید اصلی).
$table->integer('votes'); INTEGER معادل جدول
$table->longText('description'); LONGTEXT معادل جدول
$table->mediumInteger('numbers'); MEDIUMINT معادل جدول
$table->mediumText('description'); MEDIOMTEXT معادل جدول
$table->morphs('taggable'); INTEGER taggable_id و STRING را اضافه می کند taggable_type
$table->nullableTimestamps(); همانند timestamps() ، به جز اجازه NULL ها را می دهد
$table->smallInteger('votes'); SMALLINT معادل جدول
$table->tinyInteger('numbers'); TINYINT معادل جدول
$table->softDeletes(); ستون deleted_at را برای حذف های نرم اضافه می کند
$table->string('email'); ستون معادل VARCHAR
$table->string('name', 100); VARCHAR معادل با طول
$table->text('description'); TEXT معادل جدول
$table->time('sunrise'); TIME معادل جدول
$table->timestamp('added_on'); TIMESTAMP معادل جدول
$table->timestamps(); ستون های create_at و updated_at را اضافه می کند
$table->rememberToken(); remember_token به عنوان VARCHAR(100) NULL اضافه می کند
->nullable() تعیین کنید که ستون اجازه مقادیر NULL را بدهد
->default($value) یک مقدار پیش فرض برای یک ستون اعلام کنید
->unsigned() INTEGER را روی unsigned قرار دهید

استفاده از After On MySQL

اگر از پایگاه داده MySQL استفاده می کنید، می توانید از after روش برای تعیین ترتیب ستون ها استفاده کنید:

$table->string('name')->after('email');

تغییر نام ستون ها

برای تغییر نام یک ستون، می توانید از renameColumn روش موجود در Schema builder استفاده کنید. قبل از تغییر نام یک ستون، حتماً doctrine/dbal وابستگی را به فایل خود اضافه کنید composer.json .

Schema::table('users', function($table)
{
$table->renameColumn('from', 'to');
});

توجه: تغییر نام enum انواع ستون ها پشتیبانی نمی شود.

رها کردن ستون ها

برای رها کردن یک ستون، می توانید از dropColumn روش موجود در Schema builder استفاده کنید. قبل از رها کردن ستون، حتماً doctrine/dbal وابستگی را به فایل خود اضافه کنید composer.json .

رها کردن یک ستون از جدول پایگاه داده

Schema::table('users', function($table)
{
$table->dropColumn('votes');
});

رها کردن چندین ستون از جدول پایگاه داده

Schema::table('users', function($table)
{
$table->dropColumn(array('votes', 'avatar', 'location'));
});

بررسی وجود

بررسی وجود جدول

می توانید به راحتی وجود یک جدول یا ستون را با استفاده از روش های hasTable و بررسی کنید hasColumn :

if (Schema::hasTable('users'))
{
//
}

بررسی وجود ستون ها

if (Schema::hasColumn('users', 'email'))
{
//
}

اضافه کردن شاخص ها

سازنده طرحواره از چندین نوع ایندکس پشتیبانی می کند. دو راه برای اضافه کردن آنها وجود دارد. ابتدا، می‌توانید آن‌ها را به صورت روان بر روی یک تعریف ستون تعریف کنید، یا می‌توانید آنها را جداگانه اضافه کنید:

$table->string('email')->unique();

یا ممکن است انتخاب کنید که نمایه ها را در خطوط جداگانه اضافه کنید. در زیر لیستی از همه انواع شاخص موجود است:

فرمان شرح
$table->primary('id'); افزودن کلید اصلی
$table->primary(array('first', 'last')); اضافه کردن کلیدهای ترکیبی
$table->unique('email'); اضافه کردن یک شاخص منحصر به فرد
$table->index('state'); اضافه کردن یک شاخص پایه

کلیدهای خارجی

لاراول همچنین برای اضافه کردن محدودیت های کلید خارجی به جداول شما پشتیبانی می کند:

$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');

در این مثال، ما بیان می کنیم که ستون به ستون روی جدول user_id اشاره دارد . ابتدا ستون کلید خارجی را ایجاد کنید! id users

همچنین می‌توانید گزینه‌هایی را برای اقدامات «در حذف» و «در به‌روزرسانی» محدودیت مشخص کنید:

$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');

برای رها کردن یک کلید خارجی، می توانید از این dropForeign روش استفاده کنید. از یک قرارداد نامگذاری مشابه برای کلیدهای خارجی استفاده می شود که برای شاخص های دیگر استفاده می شود:

$table->dropForeign('posts_user_id_foreign');

توجه: هنگام ایجاد یک کلید خارجی که به یک عدد صحیح افزایشی ارجاع می دهد، به یاد داشته باشید که همیشه ستون کلید خارجی را بسازید unsigned .

کاهش شاخص ها

برای حذف ایندکس باید نام ایندکس را مشخص کنید. لاراول به طور پیش فرض یک نام معقول به ایندکس ها اختصاص می دهد. به سادگی نام جدول، نام ستون در نمایه و نوع شاخص را به هم متصل کنید. در اینجا چند نمونه آورده شده است:

فرمان شرح
$table->dropPrimary('users_id_primary'); حذف یک کلید اصلی از جدول "کاربران".
$table->dropUnique('users_email_unique'); حذف یک شاخص منحصر به فرد از جدول "کاربران".
$table->dropIndex('geo_state_index'); حذف یک شاخص پایه از جدول "geo".

حذف تمبرهای زمانی و SoftDeletes

برای حذف انواع ستون timestamps ، nullableTimestamps یا softDeletes ، می توانید از روش های زیر استفاده کنید:

فرمان شرح
$table->dropTimestamps(); حذف ستون های create_at و updated_at از جدول
$table->dropSoftDeletes(); حذف ستون deleted_at از جدول

موتورهای ذخیره سازی

برای تنظیم موتور ذخیره سازی برای یک جدول، engine ویژگی را در سازنده طرحواره تنظیم کنید:

Schema::create('users', function($table)
{
$table->engine = 'InnoDB';
 
$table->string('email');
});