برنامه نویسی با محبوب ترین فریم ورک پی اچ پی#7
دارالترجمه رسمی
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
دارالترجمه رسمی پارسیس شامل خدمات ترجمه رسمی و تخصصی در بیش از 60 زبان زنده دنیا
افزونه های سئو وردپرس
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
بهترین افزونه های سئو وردپرس به صورت کاملا فارسی
افزونه فرم ساز آسان
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
فرم ساز آسان اولین فرم ساز کاملا فارسی وردپرس
خرید ورق گالوانیزه رنگی
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
خرید انواع ورق گالوانیزه رنگی با بهترین قیمت
کارگاه رویه کوبی در تهران
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
خودتان را اینجا معرفی کنید
بهترین کارگاه رویه کوبی و تعمیر مبل راحتی و استیل در تهران با قیمت و کیفیت عالی
پس از ورود به فولدر پروژه به دایرکتوری 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
پس از اجرای دستور فوق migration جدول flights در دایرکتوری migration ایجاد شده است که برای اضافه کردن فیلد های جدول می توانید از توضیحات جدول زیر استفاده کنید:
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();
اولین دستور برای ایجاد یک فیلد auto increment با نام id می باشد. دومین دستور برای ایجاد یک فیلد از نوع رشته با نام name جهت نگهداری نام ، سومین فیلد از نوع رشته جهت نگهداری نام airline هست. اگر که شما خواستید که جدول شما دارای دو فیلد created_at و updated_at باشد می بایست از دستور چهارم در متد up استفاده کنید.
حال به ترمینال خود بازگشته و دستور زیر را وارد نمائید:
حالا به بانک اطلاعاتی خود بروید، همانطور که مشاهده می کنید چهار جدول flights,users,password_resset و migration ایجاد شده است.لازم به توضیح است که جدول migration جهت نگهداری آخرین تغییرات migration ها می باشد.
تغییر نام و حذف جداول در migration
حال به ترمینال خود بازگشته و دستور زیر را وارد نمائید:
php artisan migrate
اضافه کردن فیلد به جداول با استفاده از migration
برای اضافه کردن فیلد به migration ها مشابه دستور زیر در ترمینال خود استفاده کنید:
php artisan make:migration add_votes_to_users_table --table=users
دستور فوق فیلد votes رو به جدول users اضافه می کند.
بررسی وجود جدول و یا فیلد در migration
درصورتی که شما بخواهید در 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. |
موفق و پیروز باشید.
نظرات و سوالات کاربران