为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕村225694 2022-05-27 14:41:11
我想传递一个参数来定义我想在数据库播种期间创建多少条记录,而无需手动编辑工厂。我尝试了不同的变化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;    }}
查看完整描述

3 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

无法直接指定参数。


如果要通过命令行指定参数,可以使用环境变量。


class UsersTableSeeder extends Seeder

{

    public function run()

    {

        $limit = env('SEEDER_LIMIT', 1);


        echo $this->limit;

    }

}

像这样调用:


SEEDER_LIMIT=10 php artisan db:seed --class=UsersTableSeeder


查看完整回答
反对 回复 2022-05-27
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

据我所知,播种机没有参数之类的东西,但您可以自己实现。您可以创建一个接受参数的新命令,并使用这些附加参数以编程方式调用播种器。


这样的事情应该可以解决问题:


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);

    }

}


查看完整回答
反对 回复 2022-05-27
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

你可以这样设置:

public function run($count = 1)

然后你可以通过这种方式传递参数:

$this->call(ClientSeeder::class, false, ['count' => 500]);


查看完整回答
反对 回复 2022-05-27
  • 3 回答
  • 0 关注
  • 73 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信