Laravel 如何基于数组创建播种器
Laravel how to create a seeder based on array
如何基于数组创建 laravel
-seeder?
我有一个这样的数组:
$positions = array(
array('industry_id' => '1', 'name' => 'developer'),
array('industry_id' => '1', 'name' => 'designer'),
array('industry_id' => '2', 'name' => 'project manager'),
array('industry_id' => '3', 'name' => 'manager'),
...etc, etc,...etc // there are like 150 entries
)
所以不要这样做
Position::create([
'industry_id' => '1',
'name' => 'developer'
]);
对于每个条目,我都希望有另一种方法可以实现吗?
你可以尝试 insert()
通过这个 created_at
并且 updated_at
不会自动创建所以手动添加
ref link https://laravel.com/docs/8.x/queries#inserts
Position::insert([
[
'industry_id' => '1',
'name' => 'developer',
"created_at" => now(),
"updated_at" => now()
],
[
'industry_id' => '1',
'name' => 'designer',
"created_at" => now(),
"updated_at" => now()
],
[
'industry_id' => '2',
'name' => 'project manager',
"created_at" => now(),
"updated_at" => now()
],
[
'industry_id' => '3',
'name' => 'manager',
"created_at" => now(),
"updated_at" => now()
],
]);
您可以使用 foreach :
foreach ($positions as $position) {
Position::create(
[
'industry_id' => $position["industry_id"],
'name' => $position["name"],
]
);
}
它不适用于大 array/data 但它会自动创建 created_at
和 updated_at
,其他方式使用 insert 就像保罗的回答
选项 A)
$positions = array(
array('industry_id' => '1', 'name' => 'developer'),
array('industry_id' => '1', 'name' => 'designer'),
array('industry_id' => '2', 'name' => 'project manager'),
array('industry_id' => '3', 'name' => 'manager'),
....
);
foreach ($positions as $position) {
Position::create([
'industry_id' => $position['industry_id'],
'name' => $position['name'],
]);
}
选项 B)
DB::table((new Position)->getTable())->insert($positions);
Note: Insert doesn't automatically populate the timestamp columns.
如何基于数组创建 laravel
-seeder?
我有一个这样的数组:
$positions = array(
array('industry_id' => '1', 'name' => 'developer'),
array('industry_id' => '1', 'name' => 'designer'),
array('industry_id' => '2', 'name' => 'project manager'),
array('industry_id' => '3', 'name' => 'manager'),
...etc, etc,...etc // there are like 150 entries
)
所以不要这样做
Position::create([
'industry_id' => '1',
'name' => 'developer'
]);
对于每个条目,我都希望有另一种方法可以实现吗?
你可以尝试 insert()
通过这个 created_at
并且 updated_at
不会自动创建所以手动添加
ref link https://laravel.com/docs/8.x/queries#inserts
Position::insert([
[
'industry_id' => '1',
'name' => 'developer',
"created_at" => now(),
"updated_at" => now()
],
[
'industry_id' => '1',
'name' => 'designer',
"created_at" => now(),
"updated_at" => now()
],
[
'industry_id' => '2',
'name' => 'project manager',
"created_at" => now(),
"updated_at" => now()
],
[
'industry_id' => '3',
'name' => 'manager',
"created_at" => now(),
"updated_at" => now()
],
]);
您可以使用 foreach :
foreach ($positions as $position) {
Position::create(
[
'industry_id' => $position["industry_id"],
'name' => $position["name"],
]
);
}
它不适用于大 array/data 但它会自动创建 created_at
和 updated_at
,其他方式使用 insert 就像保罗的回答
选项 A)
$positions = array(
array('industry_id' => '1', 'name' => 'developer'),
array('industry_id' => '1', 'name' => 'designer'),
array('industry_id' => '2', 'name' => 'project manager'),
array('industry_id' => '3', 'name' => 'manager'),
....
);
foreach ($positions as $position) {
Position::create([
'industry_id' => $position['industry_id'],
'name' => $position['name'],
]);
}
选项 B)
DB::table((new Position)->getTable())->insert($positions);
Note: Insert doesn't automatically populate the timestamp columns.