这是我的DatabaseSeeder类代码
<?php
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$this->call(
AdminSeeder::class,
CategorySeeder::class,
UsersSeeder::class,);
}
}
我的php Artisan Command是:php artisan db:seed 我想通过一个commad迁移所有Seeder类。但我不能这样做。请帮帮我。
答案 0 :(得分:2)
call()
方法需要一个数组,而不是一个参数列表,所以正确的调用是
$this->call([
AdminSeeder::class,
CategorySeeder::class,
UsersSeeder::class,
]);
这里的关键是从Laravel框架的5.5版本开始接受数组。以前,包括您现在使用的v5.4,只允许单个类名(字符串)作为参数。因此,如果您无法升级到5.5,则需要单独调用所有类,即:
$cls = [
AdminSeeder::class,
CategorySeeder::class,
UsersSeeder::class,
];
foreach ($cls as $c) {
$this->call($c);
}
答案 1 :(得分:0)
你也分别给每个播种者打电话。
$this->call('AdminSeeder');
$this->call('CategorySeeder');
$this->call('UsersSeeder');
编辑downvoter ,call函数可以接受数组或字符串。
/**
* Seed the given connection from the given path.
*
* @param array|string $class
* @param bool $silent
* @return $this
*/
public function call($class, $silent = false)
{
$classes = Arr::wrap($class);
foreach ($classes as $class) {
if ($silent === false && isset($this->command)) {
$this->command->getOutput()->writeln("<info>Seeding:</info> $class");
}
$this->resolve($class)->__invoke();
}
return $this;
}