thedoctor0 / laravel-factory-generator
自动为您的模型生成Laravel工厂。
1.4.3
2024-05-14 06:51 UTC
Requires
- php: ^8.1
- illuminate/console: ^10.0|^11.0
- illuminate/filesystem: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
README
从现有的模型自动生成 工厂。
这将使您能够更快地编写包含模型的测试。
安装
您可以通过composer安装此包
composer require thedoctor0/laravel-factory-generator --dev
对于Laravel 8.x和9.x,请检查 v1.3.2。
对于Laravel 6.x和7.x,请检查 v1.2.5。
用法
要一次性生成所有工厂,只需运行此Artisan命令
php artisan generate:factory
它将找到所有模型,并根据数据库结构和模型关系生成测试工厂。
示例
迁移和模型
Schema::create('users', function (Blueprint $table) { $table->increments('id'); $table->string('name'); $table->string('username'); $table->string('email')->unique(); $table->string('password', 60); $table->integer('company_id'); $table->rememberToken(); $table->timestamps(); }); class User extends Model { public function company() { return $this->belongsTo(Company::class); } }
生成的工厂
<?php declare(strict_types=1); namespace Database\Factories; use App\Models\Contact; use Illuminate\Database\Eloquent\Factories\Factory; /** * @extends Factory<\App\Models\User> */ final class UserFactory extends Factory { /** * The name of the factory's corresponding model. * * @var string */ protected $model = User::class; /** * Define the model's default state. * * @return array */ public function definition(): array { return [ 'name' => faker()->name, 'username' => faker()->userName, 'email' => faker()->safeEmail, 'password' => bcrypt(faker()->password), 'company_id' => \App\Company::factory(), 'remember_token' => Str::random(10), ]; } }
高级用法
选择模型
要为特定模型或模型生成工厂,请运行Artisan命令
php artisan generate:factory User Company
覆盖现有工厂
默认情况下,生成不会覆盖任何现有的模型工厂。
您可以使用force选项强制覆盖现有的模型工厂
php artisan generate:factory --force
自定义输出目录
默认情况下,它将在app/Models
目录下递归地搜索模型。
如果您的模型位于不同的文件夹中,您可以使用--dir
选项指定。
在这种情况下,运行Artisan命令
php artisan generate:factory --dir app/Models
自定义命名空间
如果您的模型位于不同的命名空间中,您可以使用--namespace
选项指定。
只需执行此Artisan命令
php artisan generate:factory --dir vendor/package/src/Models --namespace CustomNamespace\\Models
使用递归模式
默认情况下,您的模型目录结构不考虑,即使有子目录。
您可以使用--recursive
选项将其反映到database/factories
目录
php artisan generate:factory --recursive
自定义工厂模板
如果您需要,可以自定义工厂模板以满足您的需求。
要发布工厂模板到resources/views/vendor/factory-generator/factory.blade.php
,请运行Artisan命令
php artisan vendor:publish --tag="factory-generator"
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。