我创建了多个种子文件,我的主 DatabaseSeeder 文件如下所示:
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$name1 = "James";
$name2 = "Jeff";
$name3 = "Joe";
$this->call(UserTableSeeder::class);
$this->call(PersonTableSeeder::class);
$this->call(IndividualTableSeeder::class);
$this->call(HumanTableSeeder::class);
}
}
如何让 UserTableSeeder 和 PersonTableSeeder 从我的主播种器文件中获取变量? (我真正想做的是使用 Faker 输出随机值,但对每个 table seeder 使用相同的值)
最佳答案
我遇到了同样的问题,最终通过添加 $extra var 并将其传递给 run() 函数来覆盖 call() 函数。
<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
$name1 = "James";
$name2 = "Jeff";
$name3 = "Joe";
$this->call(UserTableSeeder::class, $name1);
$this->call(PersonTableSeeder::class);
$this->call(IndividualTableSeeder::class);
$this->call(HumanTableSeeder::class);
}
public function call($class, $extra = null) {
$this->resolve($class)->run($extra);
if (isset($this->command)) {
$this->command->getOutput()->writeln("<info>Seeded:</info> $class");
}
}
}
然后将 $extra 添加到你的播种器类中
// database/seeds/UserTableSeeder.php
/**
* Run the database seeds.
*
* @return void
*/
public function run($extra = null)
{
var_dump($extra);
}
希望对您有所帮助。
关于php - Laravel 将变量从一个种子文件传递到另一个种子文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32342289/