طرحواره ساز
- معرفی
- ایجاد و رها کردن جداول
- اضافه کردن ستون ها
- تغییر نام ستون ها
- رها کردن ستون ها
- بررسی وجود
- اضافه کردن شاخص ها
- کلیدهای خارجی
- کاهش شاخص ها
- حذف مهرهای زمانی و حذف های نرم
- موتورهای ذخیره سازی
معرفی
کلاس لاراول
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');});