استفاده از seed ها در لاراول

laravel seederلاراول همچنین از یک روش ساده برای پرکردن اطلاعات تستی در جداول شما استفاده میکنند . تمامی کلاس های seed شما در مسیر database/seeds ذخیره میشوند ، میتوانید برای کلاس های seed از هر نامی استفاده نمایید اما از قواعد نامگذاری لاراول نیز باید پیروی کنید .که این قانون به شما میگویید که برای نام گذاری seed ها اول اسم جدول سپس کلمه table سپس کلمه seeder استفاده کنید برای مثال UsersTableSeederبه منظور ایجاد کلاسseeder، لازم است دستور زیر را در cmd بنویسیدphp artisan make:seeder نام seedبه صورت پیش فرض، کلاس seeder تنها یک متد به نام run را شامل می شود .در بدنه ی متدrun می توان داده های مورد نظر را به روش دلخواه در پایگاه داده درج کرد.داده ها را می توان به صورت دستی با بهره گیری از query builder وارد پایگاه داده کرد یا آن ها را به وسیله ی Eloquent model factory در داخل بانک اطلاعاتی درج نمود. در زیر کلاس پیش فرضDatabaseSeeder که با نصب Laravel آماده در اختیار برنامه نویس قرار می گیرد را ویرایش می کنیم. برای این منظور یک دستور insert ساده به متدrun اضافه می کنیم:<?php use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; class DatabaseSeeder extends Seeder { /** * Run the database seeds. * * @return void */ public function run() { DB::table('users')->insert([ 'name' => Str::random(10), 'email' => Str::random(10).'ادرس ایمیل', 'password' => Hash::make('پسورد'), ]); } }در این کد ما از DB و hashوstr استفاده کردیم پس باید دستور use آن ها را در بالا بنویسیم سپس در متد run گفته ایم در تیبل users به صورت رندم نام و ایمیل و پسورد تولید کند به صورت string و برای پسورد برای رمزنگاری آن که راحت هک نشود از کلاس hash با متد make استفاده کردیم فراخوانی کلاس های Seeder بیشترمتد call را در کلاس DatabaseSeeder برای اجرای دیگر کلاس های seed فراخوانی کنید. فراخواندن این متد سبب می شود کلاس هایseedبه فایل های متعدد کوچکتر تقسیم شده و هیچ یک از کلاس ها بیش از حد بزرگ نشود. کافی است اسم کلاسseeder مورد نظر را بهrun پاس دهید به طور مثال:/** * Run the database seeds. * * @return void */ public function run() { $this->call([ UserTabelSeeder::class, PostTabelSeeder::class, ]); }وقتی کهseeder خود را نوشتید ممکن است لازم باشدautoloader composer خود را بازسازی کنید در ان زمان ازدستور زیر در cmd استفاده میکنیدcomposer dump - autoloadپس از تعریف کلاس هایseeder، می توانید دستور آرتیزانdb:seed را برای داده ریزی (قرار دادن داده های آزمایشی) در پایگاه داده اجرا کنید.کلاس DatabaseSeeder را اجرا می کند که به واسطه ی آن تمامی دیگر کلاس های seed نیز فراخوانده می شوند.php artisan db:seedمی توان این کلاس ها را به صورت منفرد هم اجرا کرد. برای نیل به این هدف لازم است گزینه ی --class را با اسم کلاس دلخواه مقداردهی نمایید:php artisan db:seed --class=UserTableSeederمی توانید پایگاه داده ی خود را با فراخوانی دستور migrate:refresh با داده های آزمایشی پر کرده، بعلاوه آن را یکجا به پیش از اعمال آخرین تغییرات برگردانید (rollback) و نیز تمامی migration های خود را مجددا اجرا کنید. استفاده از این دستور بیشتر زمانی توصیه می شود که بخواهید یک پایگاه داده را کاملا از نو بسازید:php artisan migrate:fresh --seedبرای دانستن اطلاعات بیشتر در مورد db:seed میتوانید در cmd دستور زیر را بزنید php artisan help db:seedاین دستور help به شما اپشن های بیشتر برای استفاده را به شما نشان میدهدOptions: --class[=CLASS] The class name of the root seeder [default: &quotDatabaseSeeder&quot] --database[=DATABASE] The database connection to seed --force Force the operation to run when in production -h, --help Display this help message -q, --quiet Do not output any message -V, --version Display this application version --ansi Force ANSI output --no-ansi Disable ANSI output -n, --no-interaction Do not ask any interactive question --env[=ENV] The environment the command should run under -v|vv|vvv, --verbose Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debugمنبع: https://laravel.com/docs/7.x/seeding