این وب سایت با تمامی محتویات و دامین به فروش می رسد. لطفا جهت خریداری از طریق بخش ارتباط با ما در تماس باشید

جستجو ...


هدف ما این است که شما، در بالاترین سطح برنامه نویسی و توسعه وب باشید.

ثبت نام کنید

در این مقاله، به شرح کار model factories می پردازیم. در ادامه به شما می آموزیم که چگونه از طریق فکتوری ها و سیدرها برای مدل های پروژه داده های ساختگی تولید و برای تست پروژه استفاده کنیم.


لاراول 5.1 با یک ویژگی جدید به نام Laravel Factories پا به عرصه گذاشت و تا به امروز یکی از پرکاربردترین ویژگی های این فریم ورک است. با استفاده از این ویژگی می توان به راحتی برای مدل‌ها، داده های ساختگی ایجاد کرد .

این ویژگی مورد استفاده being–testing و database seeding است، بیایید نگاه عمیقتری به این ویژگی داشته باشیم.

فرض میکنیم سیستمی به نام lemon داریم که توسط این سیستم خدماتی را به مشتریانمان ارائه می دهیم و در صورت بروز مشکلات، مشتری بتواند آن‌ها را توسط سیستم ثبت مشکلات گزارش دهد.

پس میتوانیم از جدول کاربران برای ثبت نام مشتریان استفاده کنیم و جدولی دیگر برای ثبت مشکلات مشتریان ایجاد میکنیم .

بیشتر بخوانید:

آموزش نصب لاراول

پیکربندی لاراول پس از نصب چگونه است؟

ایجاد پروژه لاراول

laravel new lemon-support

 پس از ایجاد پروژه باید migration جدول مشکلات و مدل آن را ایجاد کنیم، که میتوانیم با استفاده از دستور زیر برای ایجاد هر دو استفاده کنیم :

php artisan make:model Issues -m or --migration

پس از اجرای این دستورالعمل وقتی وارد پوشه /app شوید فایل Issues.php که مدل جدول مشکلات است را مشاهده میکنید و در پوشه database/migrations  هم ماگریشن جدول  که به نام create_issues_table است را مشاهده می کنید .

سپس وارد فایل  app/User.php شده و رابطه آن با مدلissues را تعریف می کنیم :

public function issues()
{
  return $this->hasMany('issues');
}

الان زمان مناسبی است که وارد پوشه .env شده و تنظیمات مربوط به پایگاه داده خود را انجام دهیم.

پس از تنظیمات بالا وارد فایل  database/migrations/datetime_create_issues_table.php شده و فیلدهای جدول مشکلات را ایجاد می کنیم:

public function up()
{
  Schema::create('issues', function (Blueprint $table) {
      $table->increments('id');
      $table->integer('user_id');
      $table->string('subject');
      $table->text('description');
      $table->timestamps();
  });
}

فیلدهای این جدول عبارتند از :

user_id : برای ذخیره کد مشتری و ایجاد رابطه بین جدول users و issues

subject : موضوع مشکل به وجود آمده

description : توضیح کامل مشکلات

برای ایجاد جدول ها در دیتابیس از فرمان زیر استفاده می کنیم :

php artisan migrate

پس از اجرا خورجی زیر صادر می شود :

Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2015_10_03_141020_create_issues_table

پس از انجام این فرآیندها باید داده هایی به صورت ساختگی ایجاد کنیم تا بتوانیم روند پروژه را تست کنیم، برای تولید این داده ها از seeder ها استفاده می کنیم.

ایجاد Database Seed

  یکی از خصوصیات خیلی خوب فریم ورک لاراول Database Seed است، کار این ماژول تولید داده های ساختگی برای جداول دیتابیس است که این امر باعث افزایش بازدهی تست پروژه می شود.

برای ساخت seeder از دستور زیر استفاده میکنیم :

php artisan make:seeder UserTableSeeder

UserTableSeeder را برای تولید داده جدول users ایجاد کردیم و حالا سیدر جدول issues را ایجاد میکنیم :

php artisan make:seeder IssueTableSeeder

کلاس database/seeds/DatabaseSeeder.php را باز میکنیم و سیدر های ایجاد شده را صدا میزنیم تا هنگام اجرای فرمان php artisan db:seed اجرا شوند :

public function run()
{
  Model::unguard();

  $this->call(UserTableSeeder::class);
  $this->call(IssueTableSeeder::class);

  Model::reguard();
}

تا اینجا ماگریشن ها و سیدرها ساخته شدند، حالا باید کاری کنیم تا هنگام اجرای فرمان seed داده های ساختگی برای جداولمان تولید شود. یکی از راه های ایجاد داده به صورت ساختگی Model Factories است.

ایجاد Model Factories

 برای ایجاد فکتوری ها وارد کلاس  database/factories/ModelFactory.php  می شویم، مشاهده می کنید که به صورت پیش فرض یک فکتوری برای تولید کاربران ایجاد شده است.

$factory->define(App\User::class, function (Faker\Generator $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->email,
        'password' => bcrypt(str_random(10)),
        'remember_token' => str_random(10),
    ];
});

با استفاده از متد define برای مدل ها فکتوری ایجاد می کنیم، این متد دارای دو پارامتر ورودی است، مشاهده می کنید که پارامتر اول App\User::class  برای معرفی مدل مورد نظر است و پارامتر دوم کالبکی است که با استفاده از کتابخانه faker برای ستون های جدولمان داده ساختگی ایجاد می کنیم .

فکتوری بالا برای ایجاد کاربر است، حالا برای مدل issues که مربوط به جدول مشکلات است، فکتوری ایجاد می کنیم :

$factory->define(App\Issues::class, function (Faker\Generator $faker) {
    return [
        'subject' => $faker->sentence(5),
        'description' => $faker->text(),
    ];
});

کارکرد این فکتوری به این صورت است که با استفاده از متد sentence(5)  برای فیلد subject نوشته ای به طول 5 کلمه و برای فیلد  description از متد text() برای ایجاد متن یا پاراگراف استفاده می کنیم.

همه مراحل انجام شده است، حالا به سراغ سیدرهایی که از قبل ساخته ایم می رویم و در آنجا از مدل فکتوری های ایجاد شده برای تولید داده های ساختگی استفاده کنیم .

برای این منظور وارد سیدر  UserTableSeeder می شویم و کدهای زیر را در متد run() وارد می کنیم :

public function run()
{
  factory(App\User::class, 2)->create()->each(function($u) {
    $u->issues()->save(factory(App\Issues::class)->make());
  });
}

کارکرد کد بالا به این صورت است که با استفاده کد  factory(App\User::class, 2)->create() مشخص می کنیم که برای مدل  App\User::class دو کاربر ساختگی ایجاد کند و سپس با استفاده از متد  each() برای هر کاربر با استفاده از  factory(App\Issues::class)->make() یک مسئله یا مشکل ایجاد ثبت می کنیم .

و در آخر برای ایجاد جداول و اجرای سیدرها فرمان زیر را اجرا می کنیم :

$ php artisan migrate --seed
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table
Migrated: 2015_10_03_141020_create_issues_table
Seeded: UserTableSeeder

فرا بگیرید:

آموزش پایه لاراول ۵,۵

آموزش CSS

آموزش HTML مقدماتی

 دوره های اموزشی لیداوب، شما را با تمام مباحث طراحی سایت آشنا می‌کند.


 مطالب مرتبط  

در قسمت زیر مطالبی وجود دارند که با مقاله فعلی مرتبط هستند

متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

برترین های