gpt4 book ai didi

适用于不同环境的 Laravel Seeder

转载 作者:行者123 更新时间:2023-12-02 15:24:35 24 4
gpt4 key购买 nike

我在我的 Seeder 文件夹中创建了两个文件夹:

/seeds
/local
/production
DatabaseSeeder.php

然后,在DatabaseSeeder.php中定义以下内容

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

最佳答案

我只是快速尝试了一下并让它正常工作,所以我将向您展示我如何设置它,希望这会有所帮助。

应用程序/数据库/seeds/local/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');
}
}

应用程序/数据库/seeds/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。希望有帮助。

关于适用于不同环境的 Laravel Seeder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com