laravel - 为特定值制作播种机
问题描述
我在 Laravel 中使用播种机。我有一个名为的表,nationalities
它有两列:我想为多个具有特定唯一值(德语、法语等)的记录播种。id
name.
国籍Seeder.php
use Illuminate\Database\Seeder;
use App\Nationality;
class NationalitySeeder extends Seeder
{
public function run()
{
$nation = Nationality::create([
'name' => 'american'
]);
}
}
DatabaseSeeder.php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/** Seed the application's database **/
public function run()
{
$this->call(NationalitySeeder::class);
}
}
解决方案
在名为 NationalityFactory.php 的工厂文件中创建一个database/factories
包含以下代码的工厂文件:
use Faker\Generator as Faker;
$factory->define(App\Nationality::class, function (Faker $faker) {
return [
'name' => $faker->languageCode,
];
});
在 NationalitySeeder.php 中放入以下代码
$nationalities = ['German', 'French', 'etc.'];
factory(App\Nationality::class, count($nationalities))
->create()
->each(function ($nationality, $key) use ($nationalities) {
$nationality->name = $nationalities[$key];
});
这将根据您使用 Laravel 工厂在数组中配置的数量来确定国籍。
推荐阅读
- selenium-webdriver - 在 Vaadin 应用程序中单击按钮对 Selenium WebDriver 无效
- java - 没有 deleteKey 命令的 BKS 文件中的密钥丢失
- javascript - Toastr 未定义,javascript 错误
- json - 使用 Codable 问题解码 JSON。keyNotFound 错误信息
- c++ - 为什么标准不允许通过引用捕获不完整的异常类型?
- maven - 试图理解 OSGi 解析错误
- php - 如何在while循环中从mysqli_fetch_array()中检索当前和下一个元素?
- sql - Oracle:覆盖具有最长字符串的列中的值
- adobe - WCM IO 测试吊索映射
- java - 无法运行程序“query.sh”:CreateProcess error=2,系统找不到指定的文件