我在播种机文件夹中创建了两个文件夹:
/seeds
/local
/production
DatabaseSeeder.php
然后,在DatabaseSeeder.php
class DatabaseSeeder扩展了Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Eloquent::unguard();
// Load production seeder
if (App::Environment() === 'production')
{
$this->call('production/UsersTableSeeder');
}
// Load local seeder
if (App::Environment() === 'local')
{
$this->call('local/UsersTableSeeder');
}
}
}
现在我知道我不能call('local/UsersTablderSeeder')
,这是我的问题。我怎样才能call()
各自文件夹中的播种机文件?
修改
要清楚,当我运行上面显示的代码时,我收到以下错误
[ReflectionException]
Class local/UsersTableSeeder does not exist
答案 0 :(得分:5)
我只是快速尝试了这个并让它正常工作,所以我会告诉你我是如何设置的,希望这会有所帮助。
应用程序/数据库/种子/本地/ UsersTableSeeder.php
<?php namespace Seeds\Local;
use Illuminate\Database\Seeder as Seeder;
Class UsersTableSeeder extends Seeder {
public function run () {
dd('local');
}
}
应用程序/数据库/种子/生产/ UsersTableSeeder.php
<?php namespace Seeds\Production;
use Illuminate\Database\Seeder as Seeder;
Class UsersTableSeeder extends Seeder {
public function run () {
dd('production');
}
}
应用程序/数据库/种子/ DatabaseSeeder.php
<?php
class DatabaseSeeder extends Seeder {
/**
* Run the database seeds.
*
* @return void
*/
public function run(){
Eloquent::unguard();
// Load production seeder
if (App::Environment() === 'production')
{
$this->call('Seeds\Production\UsersTableSeeder');
}
// Load local seeder
if (App::Environment() === 'local')
{
$this->call('Seeds\Local\UsersTableSeeder');
}
}
}
不要忘记运行composer dump-autoload。 希望有所帮助。
答案 1 :(得分:2)
问题是'/'
。您应该使用'\'
代替。
答案 2 :(得分:0)
Laravel 5.7或更高版本
if ( App::environment('local') ) {
$this->call(Seeder::class);
}
if ( App::environment('production') ) {
$this->call(Seeder::class);
}
if ( App::environment('testing') ) {
$this->call(Seeder::class);
}