在 Laravel 5.3.17 中,模型工厂现在包含状态
发布时间 作者 Eric L. Barnes
Laravel 5.3.17 的新功能是对 模型工厂 的改进,它允许您为工厂定义不同的“状态”。
例如,假设您有一个用于创建用户的简单模拟器
$factory->define(App\User::class, function (Faker\Generator $faker) { return [ 'name' => $faker->name, 'email' => $faker->safeEmail, ];});
现在您希望能够定义管理员
$factory->state(\App\User::class, 'admin', function (\Faker\Generator $faker) { return [ 'is_admin' => 1, ];});
然后是主持人标志
$factory->state(\App\User::class, 'moderator', function (\Faker\Generator $faker) { return [ 'is_moderator' => 1, ];});
有了这三个设置,您现在可以像这样调用它们
// Create 5 usersfactory(\App\User::class, 5)->create(); // Create 5 Adminsfactory(\App\User::class, 5)->states('admin')->create(); // Create 5 Moderatorsfactory(\App\User::class, 5)->states('moderator')->create(); // Create 5 Admins that are also moderatorsfactory(\App\User::class, 5)->states('admin', 'moderator')->create();
更改
此外,此版本还包含对集合 only 方法的更改
-
Collection::only()
现在在$keys
为null
时返回所有项 (#15695)
错误修复
- 在使用
many()
时,为 PHP7 上的 Memcached 3 添加了解决方案 (#15739) - 修复了在移除文件数组时
Validator::hydrateFiles()
中的错误 (#15663) - 修复了
$amount
为零时模型工厂的错误 (#15764, #15779) - 使用
Notification
门面时,防止发送多个通知 (#15789)
完整的 Laravel 更改日志可在 GitHub 仓库 中找到。