ubuntu

چگونگی استفاده از migrations و seeders دیتابیس

migrations و seeders ابزارهای قدرتمندی در بانک اطلاعاتی هستند که توسط چارچوب Laravel PHPفراهم شده است تا به توسعه دهندگان اجازه دهد سریعاً به صورت خودکار راه اندازی شوند ، و یک دیتابیس برنامه را از بین ببرند و دوباره بسازند. این ابزارها در به حداقل رساندن مشکلات ناسازگاری بانک اطلاعاتی که می تواند در اثر کار با چندین توسعه دهنده در یک برنامه ایجاد شود ، کمک کننده است: مشارکت کنندگان جدید فقط باید چند دستور artisan را اجرا کنند تا دیتابیس را روی یک نصب تازه تنظیم کنند.
در این راهنما ، ما برای جمع آوری بانک اطلاعاتی برنامه نمایشی Laravel با داده های نمونه ، migrations و seeders را ایجاد خواهیم کرد. در پایان ، شما فقط با استفاده از دستورات artisan می توانید جداول بانک اطلاعاتی خود را هر چند بار که می خواهید خراب کرده و مجدد بسازید.
پیش نیازها
برای دنبال کردن این راهنما ، به موارد زیر نیاز دارید:
⦁ دسترسی به یک دستگاه محلی یا سرور مجازی توسعه Ubuntu 18.04 به عنوان یک کاربر غیر ریشه و دارای امتیازات sudo. اگر از سرور مجازی راه دور استفاده می کنید ، توصیه می شود یک فایروال فعال نصب شود. برای انجام این کار ، لطفاً به راهنمای راه اندازی سرور مجازی اولیه ما برای اوبونتو 18.04 مراجعه کنید.
⦁ Docker که مطابق مرحله 1 و مرحله 2 نحوه نصب و استفاده از Docker در اوبونتو 18.04 بر روی سرور مجازی تان نصب شده است.
⦁ Docker Compose که مطابق مرحله 1 نحوه نصب Docker Compose در اوبونتو 18.04 بر روی سرور مجازی شما نصب شده باشد.
توجه: در این راهنما ، ما از یک محیط توسعه کانتینر شده که توسط Docker Compose اداره میشود برای اجرای برنامه استفاده خواهیم کرد ، اما ممکن است شما اجرای برنامه را روی یک سرور مجازی LEMP انتخاب کنید. برای تنظیم آن ، می توانید راهنمای ما در مورد نحوه نصب و پیکربندی Laravel با LEMP در اوبونتو 18.04 را دنبال کنید.

مرحله 1 – به دست آوردن برنامه دمو
برای شروع کار ، برنامه آزمایشی Laravel را از منبع GitHub آن دریافت خواهیم کرد. ما به شاخه tutorial-02 علاقه مند هستیم که شامل یک تنظیم Docker Compose برای اجرای برنامه بر روی کانتینرها است. در این مثال ، ما برنامه را در پوشه هوم خود دانلود خواهیم کرد ، اما می توانید از هر دیرکتوری مورد نظر خود استفاده کنید:
⦁ $ cd ~

⦁ $ curl -L https://github.com/do-community/travellist-laravel-demo/archive/tutorial-2.0.1.zip -o travellist.zip
از آنجا که ما کد برنامه را به عنوان فایل .zip دانلود کردیم ، برای باز کردن آن به دستور unzip احتیاج داریم. اگر اخیراً چنین کاری نکرده اید ، ایندکس بسته محلی دستگاه خود را به روز کنید:
⦁ $ sudo apt update
سپس بسته unzip را نصب کنید:
⦁ $ sudo apt install unzip
پس از آن ، محتویات برنامه را از حالت فشرده خارج کنید:
⦁ $ unzip travellist.zip
سپس برای دسترسی آسانتر ، دایرکتوری باز نشده را به travellist-demo تغییر نام دهید:
⦁ $ mv travellist-laravel-demo-tutorial-2.0.1 travellist-demo
در مرحله بعدی ، یک فایل پیکربندی .env برای تنظیم برنامه ایجاد خواهیم کرد.
مرحله 2 – تنظیم فایل .env برنامه
در Laravel ، فایل .env برای تنظیم پیکربندی های وابسته به محیط ، مانند اعتبارنامه ها و هرگونه اطلاعاتی که ممکن است بین آرایش ها متفاوت باشد ، استفاده می شود. این فایل در کنترل مروری گنجانده نشده است.
هشدار: فایل تنظیمات محیط شامل اطلاعات حساس در مورد سرور مجازی شما ، از جمله اطلاعات دیتابیس و کلیدهای امنیتی است. به همین دلیل ، شما هرگز نباید این فایل را به صورت عمومی به اشتراک بگذارید.

مقادیر موجود در فایل .env بر مقادیر تعیین شده در فایل های پیکربندی معمول واقع در دایرکتوری config مقدم است. هر نصب بر روی یک محیط جدید نیاز به یک فایل محیطی متناسب دارد تا مواردی مانند تنظیمات اتصال بانک اطلاعاتی ، آپشن های اشکال زدایی و URL برنامه را جدا از موارد دیگری تعریف کند که بسته به محیطی که اپلیکیشن در حال اجراست ممکن است متفاوت باشند.
به دیرکتوری travellist-demo بروید:
⦁ $ cd travellist-demo
اکنون ما یک فایل جدید .env را برای سفارشی کردن گزینه های پیکربندی محیط توسعه ای که تنظیم می کنیم ایجاد خواهیم کرد. Laravel با یک فایل.env همراه است که می توانیم آنرا کپی کنیم تا فایل خودمان را ایجاد کنیم:
⦁ $ cp .env.example .env
این فایل را با استفاده از nano یا ویرایشگر متن مورد نظر خود باز کنید:
⦁ $ nano .env
فایل .env شما اکنون به این شکل خواهد بود:
.env
APP_NAME=Travellist
APP_ENV=dev
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost:8000

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=travellist
DB_USERNAME=travellist_user
DB_PASSWORD=password

فایل .env فعلی از برنامه نمایشی Travellist شامل تنظیماتی برای استفاده از محیط کانتینر شده ای است که ما با Docker Compose در قسمت آخر این سری ایجاد کرده ایم. شما نیازی به تغییر هیچ یک از این مقادیر ندارید ، اما در صورت تمایل می توانید DB_DATABASE ، DB_USERNAME و DB_PASSWORD را تغییر دهید ، زیرا این موارد توسط فایل docker-compose.yml ما به صورت خودکار کشیده می شود تا دیتابیس توسعه را تنظیم کنید. فقط مطمئن شوید که متغیر DB_HOST بدون تغییر باقی بماند ، زیرا در محیط Docker Compose نام سرویس دیتابیس ما را ارجاع می دهد.
اگر تغییری در فایل ایجاد کردید ، با فشار دادن CTRL + X ، Y ، و سپس enter آن را ذخیره کرده و ببندید.
توجه: اگر تصمیم به اجرای برنامه در سرور مجازی LEMP گرفتید ، باید مقادیر هایلایت شده را تغییر دهید تا تنظیمات دیتابیس خود را از جمله متغیر DB_HOST منعکس کنید.

مرحله 3 – نصب متعلقات برنامه با Composer
اکنون ما برای نصب متعلقات برنامه از Composer ، ابزار مدیریت متعلقات PHP استفاده خواهیم کرد و اطمینان حاصل خواهیم کرد که می توانیم دستورات artisan را اجرا کنیم.
محیط Docker Compose خود را با دستور زیر تنظیم کنید. این کار باعث می شود تا تصویر travellist برای سرویس app ایجاد شود و برای ایجاد محیط برنامه ، تصاویر اضافی Docker مورد نیاز خدمات nginx و db را جذب کنید:
⦁ $ docker-compose up -d
Output
Creating network “travellist-demo_travellist” with driver “bridge”
Building app
Step 1/11 : FROM php:7.4-fpm
—> fa37bd6db22a
Step 2/11 : ARG user
—> Running in 9259bb2ac034

Creating travellist-app … done
Creating travellist-nginx … done
Creating travellist-db … done

این عملیات ممکن است چند دقیقه طول بکشد. پس از اتمام مراحل ، می توانیم Composer را برای نصب متعلقات برنامه اجرا کنیم.
برای اجرای Composer و سایر دستورات در کانتینر سرویس app ، از docker-compose exec استفاده خواهیم کرد. دستور exec به ما امکان می دهد تا هر دستور مورد نظر خود را روی کانتینرهای مدیریت شده توسط Docker Compose اجرا کنیم. از دستور زیر استفاده می کند: docker-compose exec service_name
توجه: در صورت تصمیم به استفاده از سرور مجازی LEMP برای اجرای نسخه ی نمایشی ، باید قسمت docker-compose exec app از دستورهای ذکر شده در سراسر این راهنما را نادیده بگیرید. به عنوان مثال ، به جای اجرای دستور زیر به صورتی که نوشته شده ، فقط اجرا کنید:
⦁ $ composer install
برای اجرای composer install در کانتینر app ، دستور زیر را اجرا کنید:
⦁ $ docker-compose exec app composer install
Output
Loading composer repositories with package information
Installing dependencies (including require-dev) from lock file
Package operations: 85 installs, 0 updates, 0 removals
– Installing doctrine/inflector (1.3.1): Downloading (100%)
– Installing doctrine/lexer (1.2.0): Downloading (100%)
– Installing dragonmantank/cron-expression (v2.3.0): Downloading (100%)

هنگامی که composer نصب متعلقات برنامه را به پایان رساند ، می توانید دستورات artisan را اجرا کنید. برای آزمایش اینکه برنامه قادر به اتصال به بانک اطلاعاتی است ، دستور زیر را اجرا کنید که تمام جداول قبلی را حذف میکند:
⦁ docker-compose exec app php artisan db:wipe
این دستور هر جدول از قبل موجود را در دیتابیس پیکربندی شده رها می کند. اگر با موفقیت اجرا شد و برنامه قادر به اتصال به بانک اطلاعاتی شد ، خروجی مانند این را مشاهده خواهید کرد:
Output
Dropped all tables successfully.

اکنون که متعلقات برنامه را با Composer نصب کرده اید ، می توانید از ابزار artisan برای ایجاد migrations و seeders استفاده کنید.

مرحله 4 – ایجاد migrationهای دیتابیس
ابزار خط فرمان artisan که با Laravel ارسال می شود حاوی یک سری دستورات کمکی است که می تواند برای مدیریت برنامه و راه اندازی دسته های جدید برای راه اندازی خودکار استفاده شود. برای تولید یک گروهmigration جدید ، می توانیم از دستور make: migration به شرح زیر استفاده کنیم:
⦁ $ docker-compose exec app php artisan make:migration create_places_table
Laravel براساس نام توصیفی که برای دستور make: migration ارائه شده است ، اجرای این برنامه (create) ، نام جدول (places) و اینکه آیا این migration باعث ایجاد جدول جدید خواهد شد یا خیر را استنباط می کند.
خروجی مشابه این را مشاهده خواهید کرد:
Output
Created Migration: 2020_02_03_143622_create_places_table

این خروجی فایل جدیدی را در دیرکتوری database/migrations برنامه ایجاد می کند. برچسب زمانی موجود در فایل خودکار تولید شده توسط Laravel استفاده می شود تا تعیین کند که در چه صورت باید migrations اجرا شود.
از ویرایشگر متن دلخواه خود برای باز کردن فایل migration تولید شده استفاده کنید. به یاد داشته باشید که مقدار هایلایت شده را با نام فایل migration شخصی خود جایگزین کنید:
⦁ $ nano database/migrations/2020_02_03_143622_create_places_table.php
فایل migration تولید شده حاوی دسته ای به نام CreatPlacesTable است:

database/migrations/2020_02_03_143622_create_places_table.php
<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePlacesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create(‘places’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->timestamps();
});
}

/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists(‘places’);
}
}

این کلاس دو روش دارد: up و down. هر دو روش حاوی کد بوت استرپ (راه اندازی خودکار) هستند که می توانید برای شخصی سازی آنچه هنگام انجام این migration و همچنین هنگام بازگشت دوباره اتفاق می افتد گسترش دهید.
ما روش up را طوری اصلاح خواهیم کرد که جدول places ساختاری را که قبلاً در نسخه فعلی برنامه استفاده می کنیم منعکس کند.
⦁ id : فیلد کلید اولیه.
⦁ name : نام مکان.
⦁ visited : آیا این مکان قبلاً بازدید شده یا خیر.
سازنده شماتیک Laravel روش هایی را برای ایجاد ، به روزرسانی و حذف جداول در یک دیتابیس در معرض دید شما قرار می دهد. کلاس Blueprint ساختار جدول را تعریف می کند و چندین روش برای انتزاع تعریف هر فیلد جدول ارائه می دهد.
کد خودکار تولید شده یک فیلد اصلی اولیه با نام id تنظیم می کند. روش timestamps دو فیلد datetime ایجاد می کند که با وارد کردن داده یا به روزرسانی داده ها در آن جدول ، به طور خودکار توسط دسته های دیتابیس تحت آن به روز می شوند. علاوه بر اینها ، باید یک name و یک فیلد visited را نیز وارد کنیم.
قسمت name ما از نوع string خواهد بود ، و قسمت visited ما با نوع boolean تنظیم می شود. ما همچنین مقدار پیش فرض 0 را برای قسمت visited تعیین خواهیم کرد ، به طوری که اگر هیچ مقداری رد و بدل نشود ، بدین معنی است که هنوز از مکان بازدید نشده است. اکنون روش up به این صورت خواهد بود:
database/migrations/2020_02_03_143622_create_places_table.php

public function up()
{
Schema::create(‘places’, function (Blueprint $table) {
$table->bigIncrements(‘id’);
$table->string(‘name’, 100);
$table->boolean(‘visited’)->default(0);
$table->timestamps();
});
}

توجه: لیست کامل انواع ستون های موجود را می توانید در مستندات Laravel پیدا کنید.

پس از درج دو خط هایلایت شده در اسکریپت migration خود ، فایل را ذخیره کنید و ببندید.
اکنون migration شما آماده اجرا از طریق artisan migrate میباشد. با این حال ، این فقط یک جدول خالی ایجاد می کند. همچنین باید بتوانیم داده های نمونه را برای توسعه و آزمایش درج کنیم. در مرحله بعدی ، خواهیم دید که چگونه می توان با استفاده از seeders دیتابیس این کار را انجام داد.
مرحله 5 – ایجاد Seeders بانک اطلاعاتی
seeder  یک کلاس ویژه ای است که برای تولید و درج داده های نمونه (seedها) در یک دیتابیس استفاده می شود. این امر یک ویژگی مهم در محیط های توسعه است ، زیرا به شما امکان می دهد برنامه را با یک دیتابیس تازه ، با استفاده از مقادیر نمونه ای بازتولید کنید که در غیر این صورت مجبور بودید به صورت دستی در هر بار بازتولید بانک اطلاعاتی آنها را وارد کنید.
اکنون ما از دستور artisan برای ایجاد یک کلاس seeder جدید برای جدول places خود با نام PlacesTableSeeder استفاده خواهیم کرد:
⦁ $ docker-compose exec app php artisan make:seeder PlacesTableSeeder
این دستور فایل جدیدی به نام PlacesTableSeeder.php را در دیرکتوری database/seeds ایجاد می کند. آن فایل را با استفاده از ویرایشگر متن مورد نظر خود باز کنید:
⦁ $ nano database/seeds/PlacesTableSeeder.php
فایل PlacesTableSeeder.php خودکار تولید شده این گونه خواهد بود:
database/seeds/PlacesTableSeeder.php
<?php

use Illuminate\Database\Seeder;

class PlacesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
//
}
}

کلاس seeder جدید ما شامل یک روش خالی به نام run است. این روش با اجرای فرمان db: seed Artisan فراخوانی می شود.
ما باید روش run را ویرایش کنیم تا دستورالعمل هایی برای درج داده های نمونه در دیتابیس را شامل شود. از Laravel query builder برای ساده سازی این فرآیند استفاده خواهیم کرد.
Laravel query builder یک رابط کاربری قوی برای عملیات دیتابیس مانند درج ، به روزرسانی ، حذف و بازیابی داده ها ارائه می دهد. همچنین در برابر حملات تزریقی SQL محافظت هایی را ارائه می دهد. query builder با نمای خارجی DB به نمایش در می آید- یک پروکسی استاتیک برای در برگیری کلاس های دیتابیس در کانتینر سرویس.
برای شروع ، ما یک متغیر کلاس استاتیک ایجاد خواهیم کرد تا تمام مکان های نمونه ای که می خواهیم در بانک اطلاعاتی به عنوان یک آرایه درج کنیم را نگه داریم. این کار به ما این امکان را می دهد تا از یک حلقه foreach برای تکرار در تمام مقادیر استفاده کنیم و هر یک از آنها را با استفاده از query builder در بانک اطلاعاتی وارد کنیم.
ما این متغیر $places را فراخوانی میکنیم:
database/seeds/PlacesTableSeeder.php
<?php

use Illuminate\Database\Seeder;

class PlacesTableSeeder extends Seeder
{
static $places = [
‘Berlin’,
‘Budapest’,
‘Cincinnati’,
‘Denver’,
‘Helsinki’,
‘Lisbon’,
‘Moscow’,
‘Nairobi’,
‘Oslo’,
‘Rio’,
‘Tokyo’
];

در مرحله بعد ، باید یک عبارت use را در بالای کلاس PlacesTableSeeder خود وارد کنیم تا مراجعه به نمای DB در کل کد تسهیل شود:
database/seeds/PlacesTableSeeder.php
<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class PlacesTableSeeder extends Seeder

اکنون می توانیم با استفاده از یک حلقه foreach مقادیر آرایه $places را تکرار کنیم و هر یک را در جدول places خود با استفاده از query builder وارد کنیم:
database/seeds/PlacesTableSeeder.php

public function run()
{
foreach (self::$places as $place) {
DB::table(‘places’)->insert([
‘name’ => $place,
‘visited’ => rand(0,1) == 1
]);
}
}

حلقه foreach در هر یک از آرایه های استاتیک $places تکرار می شود. در هر تکرار ، از نمای DB برای قرار دادن یک ردیف جدید در جدولplaces استفاده می کنیم. فیلد name را به نام محلی که تازه از آرایه $places بدست آورده ایم تنظیم کردیم و قسمت visited را روی یک مقدار تصادفی یا 0 یا 1 تنظیم می کنیم.
کلاس کامل PlacesTableSeeder بعد از همه به روزرسانی ها اینگونه به نظر می رسد:
database/seeds/PlacesTableSeeder.php
<?php

use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class PlacesTableSeeder extends Seeder
{
static $places = [
‘Berlin’,
‘Budapest’,
‘Cincinnati’,
‘Denver’,
‘Helsinki’,
‘Lisbon’,
‘Moscow’,
‘Nairobi’,
‘Oslo’,
‘Rio’,
‘Tokyo’
];

/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
foreach (self::$places as $place) {
DB::table(‘places’)->insert([
‘name’ => $place,
‘visited’ => rand(0,1) == 1
]);
}
}
}

هنگامی که این تغییرات را انجام داده اید ، فایل را ذخیره کنید و ببندید.
کلاس های Seeder به طور خودکار در برنامه لود نمی شوند. ما باید کلاس اصلی DatabaseSeeder را ویرایش کنیم تا یک seeder که اخیراً ایجاد کرده ایم فراخوانی شود.
فایل database/seeds/DatabaseSeeder.php را با استفاده از nano یا ویرایشگر مورد علاقه خود باز کنید:
⦁ $ nano database/seeds/DatabaseSeeder.php
کلاس DatabaseSeeder مانند هر seeder دیگر به نظر می رسد: از کلاس Seeder امتداد دارد و یک روش run دارد. ما این روش را به روز خواهیم کرد تا یک فراخوانی PlacesTableSeeder را شامل شود.
با حذف خط کامنت شده و جایگزینی آن با کد هایلایت شده زیر ، روش run فعلی را در کلاس DatabaseSeeder خود به روز کنید.
database/seeds/DatabaseSeeder.php

public function run()
{
$this->call(PlacesTableSeeder::class);
}

کلاس کامل DatabaseSeeder بعد از بروزرسانی اینگونه خواهد شد:
database/seeds/DatabaseSeeder.php
<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
/**
* Seed the application’s database.
*
* @return void
*/
public function run()
{
$this->call(PlacesTableSeeder::class);
}
}

پس از اتمام به روزرسانی محتوای آن ، فایل را ذخیره کنید و ببندید.
اکنون تنظیمmigration و seeder را برای جدول places خود به پایان رسانده ایم. در مرحله بعدی ، نحوه اجرای آنها را خواهیم دید.
مرحله ششم – اجرای migration و seeder دیتابیس
قبل از ادامه کار ، باید اطمینان حاصل کنیم که برنامه شما در حال اجرا است. ما کلید رمزگذاری برنامه را تنظیم خواهیم کرد و سپس از طریق یک مرورگر برای تست سرور مجازی وب به برنامه دسترسی پیدا می کنیم.
برای تولید کلید رمزنگاری مورد نیاز Laravel می توانید از کلید artisan: generate command استفاده کنید:
⦁ $ docker-compose exec app php artisan key:generate
پس از ایجاد کلید ، با نشان دادن مرورگر خود به نام هاست سرور مجازی یا آدرس IP در پورت 8000 ، می توانید به برنامه دسترسی پیدا کنید:
http: // server_host_or_ip: 8000
صفحه ای را به این شکل مشاهده خواهید کرد:

این بدان معنی است که برنامه می تواند به بانک اطلاعاتی وصل شود ، اما نمی تواند یک جدول به نام places را پیدا کند. اکنون با استفاده از دستور migrate artisan زیر جدول places را ایجاد خواهیم کرد:
⦁ $ docker-compose exec app php artisan migrate
خروجی مشابه این دریافت خواهید کرد:
Output
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.06 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.06 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.03 seconds)
Migrating: 2020_02_10_144134_create_places_table
Migrated: 2020_02_10_144134_create_places_table (0.03 seconds)

متوجه خواهید شد که چند migration دیگر به همراه create_places_table  که تنظیم کرده ایم انجام شده است. این migrationها هنگام نصب Laravel به صورت خودکار ایجاد می شوند. اگرچه ما اکنون از این جداول اضافی استفاده نخواهیم کرد ، در صورت گسترش برنامه برای داشتن کاربران ثبت نام شده و کارهای برنامه ریزی شده ، در آینده به آنها نیاز خواهیم داشت. در حال حاضر ، شما فقط می توانید آنها را مانند گذشته رها کنید.
در این مرحله جدول ما هنوز خالی است. ما باید دستور db: seed را اجرا کنیم تا دیتابیس را با مکان های نمونه خود seed دهی کنیم:
⦁ $ docker-compose exec app php artisan db:seed
این کار seeder ما را اجرا می کند و مقادیر نمونه ای را که ما در کلاس PlacesTableSeeder تعریف کردیم وارد می کند. خروجی مشابه این را مشاهده خواهید کرد:
Output
Seeding: PlacesTableSeeder
Seeded: PlacesTableSeeder (0.06 seconds)
Database seeding completed successfully.

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

هر وقت لازم است از ابتدا شروع کنید ، می توانید تمام جداول بانک اطلاعاتی خود را با این دستور دراپ کنید:
⦁ $ docker-compose exec app php artisan db:wipe
Output
Dropped all tables successfully.

برای اجرای برنامه migration و seed (بذردهی) جداول در یک دستور واحد ، می توانید از این خط استفاده کنید:
⦁ $ docker-compose exec app php artisan migrate –seed
Output
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.06 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.07 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.03 seconds)
Migrating: 2020_02_10_144134_create_places_table
Migrated: 2020_02_10_144134_create_places_table (0.03 seconds)
Seeding: PlacesTableSeeder
Seeded: PlacesTableSeeder (0.06 seconds)
Database seeding completed successfully.

اگر می خواهید migration را به عقب برگردانید ، می توانید این دستور را اجرا کنید:
⦁ $ docker-compose exec app php artisan migrate:rollback
این دستور روش down را برای هر کلاس migration در داخل پوشه migration ها ایجاد می کند. به طور معمول ، تمام جداول ایجاد شده از طریق کلاس های migration را حذف می کند ، و جداول دیگری که ممکن است به صورت دستی ایجاد شده باشد را به خود اختصاص نمی دهد. خروجی مانند این را خواهید دید:
Output
Rolling back: 2020_02_10_144134_create_places_table
Rolled back: 2020_02_10_144134_create_places_table (0.02 seconds)
Rolling back: 2019_08_19_000000_create_failed_jobs_table
Rolled back: 2019_08_19_000000_create_failed_jobs_table (0.02 seconds)
Rolling back: 2014_10_12_100000_create_password_resets_table
Rolled back: 2014_10_12_100000_create_password_resets_table (0.02 seconds)
Rolling back: 2014_10_12_000000_create_users_table
Rolled back: 2014_10_12_000000_create_users_table (0.02 seconds)

دستور بازگشت به خصوص هنگامی مفید است که شما در حال تغییر در مدل های برنامه هستید و از دستور db: wipe نمیتوان استفاده کرد – به عنوان مثال ، اگر چندین سیستم به یک دیتابیس وابسته باشند.
نتیجه
در این راهنما ، ما نحوه استفاده از migration ها و seeder های دیتابیس را برای تسهیل تنظیم دیتابیس های توسعه و آزمایش یک برنامه Laravel 6 مشاهده کردیم.
به عنوان مرحله بعد ، می توانید برای جزئیات بیشتر در مورد نحوه استفاده از query builder ، و نحوه استفاده از مدل های Eloquent برای انتزاع طرح دیتابیس برنامه خود ، مطالب Laravel را بررسی کنید.

 

از این لینک ها زیر می توانید آمورش های بیشتری برای لینوکس پیدا کنید :

نحوه نصب Nginx در CentOS 8  –  استفاده از Cron برای خودکارسازی کارها در اوبونتو 18

پکیج کردن و انتشار برنامه Snap در اوبونتو 18نصب و استفاده ازRadamsa برای فوز کردن برنامه ها روی Ubuntu 18

استقرارهای تولید Node.js خود را با Shipit در CentOS 7 –  نحوه راه اندازی Eclipse Theia Cloud IDE Platform در Debian 10

چگونگی استفاده از migrations و seeders دیتابیس  –  نحوه نصب Docker Compose در Debian 10

نحوه نصب R روی اوبونتو 18.04 – چگونه می توان با کتابخانه (library) درخواست ها در پایتون شروع به کار کرد

چگونه می توان هاست های مجازی Apache را در اوبونتو 18.04  –  نحوه اجرای صفحه گذاری در MySQL با PHP روی اوبونتو 18.04

نصب پشته Nginx، MySQL، PHP LEMP در CentOS 8 – نحوه تنظیم پلتفرم Eclipse Theia Cloud IDE در CentOS 7

نحوه نصب پشته یا استک Nginx ، MySQL ، PHP LEMP  –  بسته بندی برنامه Laravel 6 برای توسعه با Docker Compose

مراحل ایمن سازی Apache HTTP در FreeBSD 12  – بهینه سازی درخواست های MySQL با ذخیره سازی ProxySQL در اوبونتو 16

درک Objectهای Map و Set در JavaScript  –  استفاده از Ansible برای نصب و راه اندازی وردپرس با LAMP در اوبونتو 18

نحوه راه اندازی Eclipse Theia Cloud IDE در اوبونتو  –  چگونه می توان پلتفرم كد سرور Cloud IDE را در اوبونتو 18.04

نحوه استفاده از Cron برای خودکارسازی کارها در CentOS 8   –  چگونه می توان از رول های ansible برای انتزاع محیط زیرساختی

نحوه نوشتن کد ناهمگام (غیر همزمان) در Node.js –  نحوه پیکربندی یک خوشه Galera با MySQL در سرورهای اوبونتو 18

راه اندازی اولیه سرور با CentOS 8 –   تهیه نسخه پشتیبان و بازیابی یک خوشه Kubernetes

نحوه تنظیم کلیدهای SSH در CentOS 8 –  نحوه نصب و استفاده از PostgreSQL در CentOS 7

نحوه ساختن یک برنامه Node.js با Docker  Quickstart  –  چگونه می توان پلتفرم Eclipse Theia Cloud IDE را روی اوبونتو

چگونه می توان هاست های مجازی Apache را در اوبونتو  –  مدیریت DNS با استفاده از DNSControl در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04 –  چگونه می توان پلتفرم Cloud IDE کد سرور را روی CentOS 7

نحوه نصب و استفاده از TimescaleDB در CentOS 7نحوه نصب Apache Kafka در Debian 10

نحوه تایید صحت رمز عبور با Apache در اوبونتو 18.04  –  نحوه نصب وردپرس با OpenLiteSpeed ​​در اوبونتو 18.04

 

 

کلمات کلیدی خرید سرور

خرید vps – خرید سرور مجازی – خرید سرور – سرور هلند – فروش vps – سرور مجازی آمریکا – خریدvps – سرور مجازی هلند – فروش سرور مجازی – سرور آمریکا – vps – سرور مجازی انگلیس – سرور مجازی آلمان – سرور مجازی کانادا – خرید vps آمریکا – خرید وی پی اس – سرور – خرید سرور مجازی هلند – vps خرید – سرور مجازی فرانسه – سرور مجازی هلند – خرید vps آمریکاخرید سرور مجازی ارزان هلندvpsخرید vps هلندخرید سرور مجازی آمریکاخرید vps فرانسهتست vpsسرور مجازی تستسرور مجازی ویندوزارزانترین vpsخرید وی پی اسvps ارزان – 


https://vpsgol.net/product/vps-germany/

https://vpsgol.net/product/vps-usa/

https://vpsgol.net/product/vps-france/

https://vpsgol.net/product/vps-canada/

https://vpsgol.net/product/vps-poland/

https://vpsgol.net/product/vps-netherlands/

https://vpsgol.net/product/vps-england/