use*_*651 8 php laravel laravel-seeding
我想传递一个参数来定义我想在数据库播种期间创建多少条记录,而无需手动编辑工厂。
我尝试了不同的变体 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;
}
}
Run Code Online (Sandbox Code Playgroud)
okn*_*ate 21
您可以这样设置:
public function run($count = 1)
Run Code Online (Sandbox Code Playgroud)
然后你可以这样传递参数:
$this->call(ClientSeeder::class, false, ['count' => 500]);
Run Code Online (Sandbox Code Playgroud)
Moh*_*Ani 18
您可以在致电任何其他播种者之前询问该限制,使用
// DatabaseSeeder.php
$limit = $this->command->ask('Please enter the limit for creating something !!');
Run Code Online (Sandbox Code Playgroud)
然后您可以将该限制传递给“DatabaseSeeder”中的任何其他播种者,如下所示
//DatabaseSeeder.php
$this->call(AnyAdditionalSeeder::class, false, compact('limit'));
Run Code Online (Sandbox Code Playgroud)
然后在“AnyAdditionalSeeder”中,您可以添加参数并将其命名为 $limit 到 run() 方法,如下所示
public function run($limit)
{
// you can access limit variable here
}
Run Code Online (Sandbox Code Playgroud)
然后当您运行该命令时,php artisan db:seed它会询问您限制:)
pat*_*cus 15
无法直接指定参数。
如果要通过命令行指定参数,可以使用环境变量。
class UsersTableSeeder extends Seeder
{
public function run()
{
$limit = env('SEEDER_LIMIT', 1);
echo $this->limit;
}
}
Run Code Online (Sandbox Code Playgroud)
像这样调用:
SEEDER_LIMIT=10 php artisan db:seed --class=UsersTableSeeder
Run Code Online (Sandbox Code Playgroud)
据我所知,没有播种机参数之类的东西,但您可以自己实现。您可以创建一个新命令,该命令接受参数并使用这些附加参数以编程方式调用播种机。
像这样的事情应该可以解决问题:
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
public function run(int $limit)
{
echo $limit;
// Seed some stuff
}
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5308 次 |
| 最近记录: |