我想传递一个参数来定义在数据库播种期间要创建多少条记录,而不必手动编辑工厂。
我在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;
}
}
6条答案
按热度按时间gab6jxml1#
无法直接指定参数。
如果要通过命令行指定参数,可以使用环境变量。
这样叫:
wqsoz72f2#
据我所知,播种器没有参数,但你可以自己实现它。你可以创建一个接受参数的新命令,并使用这些附加参数以编程方式调用播种器。
类似这样的东西应该可以做到这一点:
第一个
nxagd54h3#
您可以按以下方式进行设置:
然后你可以这样传递这个论证:
7lrncoxx4#
您可以在呼叫任何其他播种者之前使用
然后您可以将该限制从“DatabaseSeeder”传递给任何其他种子,如下所示
然后在“AnyAdditionalSeeder”中,可以向run()方法添加参数并将其命名为$limit,如下所示
那么当您运行命令
php artisan db:seed
时,它将要求您提供限制:)3z6pesqy5#
我解决方案:
从.php文件调用
用于创建表的架构
简短地说:
结束日期
tkclm6bt6#
从Laravel 8开始,你可以使用
callWith
将参数传递给种子函数的run
方法。然后您可以在其他播种机中使用这些播种机,如下所示:
请注意,您为
callWith
给予的参数数组是关联的,其键应该与run
方法的参数匹配,因为该调用通常将通过Laravel的应用程序容器进行解析。