استفاده از seed ها در لاراول
لاراول همچنین از یک روش ساده برای پرکردن اطلاعات تستی در جداول شما استفاده میکنند . تمامی کلاس های 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: "DatabaseSeeder"]
--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
مطلبی دیگر از این انتشارات
دستهبندی مدلهای الکوئنت در فریمورک لاراول
مطلبی دیگر از این انتشارات
۵ مرحله برای طراحی یک دیتابیس با ساختار مناسب !!
مطلبی دیگر از این انتشارات
افزونه من برای VSCode و لاراول