In Laravel 5.3.17, Model Factories now includes states

In Laravel 5.3.17, Model Factories now includes states

New in Laravel 5.3.17 is an improvement to Model Factories that you allows to define different “states” for a factory.

For example pretend you have a simple faker for creating a User:

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

Now you want to have the ability to define an administrator:

$factory->state(\App\User::class, 'admin', function (\Faker\Generator $faker) {
  return [
    'is_admin' => 1,
  ];
});

Then a moderator flag:

$factory->state(\App\User::class, 'moderator', function (\Faker\Generator $faker) {
  return [
    'is_moderator' => 1,
  ];
});

With these three set you can now call them like this:

// Create 5 users
factory(\App\User::class, 5)->create();

// Create 5 Admins
factory(\App\User::class, 5)->states('admin')->create();

// Create 5 Moderators
factory(\App\User::class, 5)->states('moderator')->create();

// Create 5 Admins that are also moderators
factory(\App\User::class, 5)->states('admin', 'moderator')->create();

Changes

Also, included with this release is a change to the collection only method:

  • Collection::only() now returns all items if $keys is null (#15695)

Bug Fixes:

  • Added workaround for Memcached 3 on PHP7 when using many() (#15739)
  • Fixed bug in Validator::hydrateFiles() when removing the files array (#15663)
  • Fixed model factory bug when $amount is zero (#15764, #15779)
  • Prevent multiple notifications getting sent out when using the Notification facade (#15789)

The full Laravel changelog is available in the GitHub repo.


Filed in: News / Laravel 5.3 / Model Factories / Releases


Newsletter

Join the weekly newsletter and never miss out on new tips, tutorials, and more.

Laravel News Partners

Laravel Jobs

Laravel + Vue.JS developer
Remote or in Toronto Canada
Star Dot Hosting Inc
Full Stack or Back-End Developer
Alexandria, VA; Tallahassee, FL; Orlando, FL
Marketing for Change
Senior Quality Assurance Engineer
Remote
Bisnow Media
Senior PHP/Laravel Developer: Your Dream Work Environment
Remote
iPhone Photography School
Senior Software Engineer
Remote or San Francisco
Curology
Laravel Developer
Las Vegas, NV
V Shred
R&D Developer
Denver, CO
booj