猿问

将数量或其他参数传递给 Laravel 播种机

我想传递一个参数来定义我想在数据库播种期间创建多少条记录,而无需手动编辑工厂。


我尝试了不同的变化php artisan db:seed --class=UsersTableSeeder [using different args here]


我似乎找不到任何文档,所以我不知道该功能是否存在。存在这样的东西吗?


class UsersTableSeeder extends Seeder

{

    public $limit = null;


    public function __construct($limit = 1) {

        $this->limit = $limit;

    }


    public function run()

    {

      echo $this->limit;

    }

}


慕村225694
浏览 74回答 3
3回答

猛跑小猪

无法直接指定参数。如果要通过命令行指定参数,可以使用环境变量。class UsersTableSeeder extends Seeder{    public function run()    {        $limit = env('SEEDER_LIMIT', 1);        echo $this->limit;    }}像这样调用:SEEDER_LIMIT=10 php artisan db:seed --class=UsersTableSeeder

江户川乱折腾

据我所知,播种机没有参数之类的东西,但您可以自己实现。您可以创建一个接受参数的新命令,并使用这些附加参数以编程方式调用播种器。这样的事情应该可以解决问题:use Illuminate\Database\Seeder;class UsersTableSeeder extends Seeder{    public function run(int $limit)    {        echo $limit;        // Seed some stuff    }}namespace App\Console\Commands;use Illuminate\Console\Command;use UsersTableSeeder;class SeedCommand extends Command{    protected $signature = 'app:seed {limit}';    public function handle(UsersTableSeeder $seeder)    {        $limit = $this->argument('limit');        $seeder->run($limit);    }}

杨__羊羊

你可以这样设置:public function run($count = 1)然后你可以通过这种方式传递参数:$this->call(ClientSeeder::class, false, ['count' => 500]);
随时随地看视频慕课网APP
我要回答