在 Laravel 开发中,为了进行单元测试和集成测试,我们经常需要使用模型工厂来生成测试数据。手动创建这些工厂类既繁琐又容易出错,尤其是在大型项目中,模型数量众多,字段复杂。幸运的是,
thedoctor0/laravel-factory-generator
thedoctor0/laravel-factory-generator
安装
通过 Composer 安装非常简单:
<pre class="brush:php;toolbar:false;">composer require thedoctor0/laravel-factory-generator --dev
使用
安装完成后,只需运行以下 Artisan 命令即可生成工厂类:
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">php artisan generate:factory
该命令会自动查找项目中的所有模型,并为每个模型生成一个对应的工厂类。
示例
假设我们有一个
User
name
username
password
company_id
Company
belongsTo
在运行 <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false;">php artisan generate:factory
UserFactory
<pre class="brush:php;toolbar:false;"><?php
declare(strict_types=1);
namespace DatabaseFactories;
use AppModelsContact;
use IlluminateDatabaseEloquentFactoriesFactory;
/**
* @extends Factory<AppModelsUser>
*/
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' => AppCompany::factory(),
'remember_token' => Str::random(10),
];
}
}可以看到,该工厂类自动为每个字段生成了默认值,并且自动处理了与
Company
高级用法
选择特定模型: 可以指定要生成工厂类的模型名称:
<pre class="brush:php;toolbar:false;">php artisan generate:factory User Company
强制覆盖: 使用
--force
<pre class="brush:php;toolbar:false;">php artisan generate:factory --force
自定义输出目录: 使用
--dir
<pre class="brush:php;toolbar:false;">php artisan generate:factory --dir app/Models
自定义命名空间: 使用
--namespace
<pre class="brush:php;toolbar:false;">php artisan generate:factory --dir vendor/package/src/Models --namespace CustomNamespace\Models
递归模式: 使用
--recursive
<pre class="brush:php;toolbar:false;">php artisan generate:factory --recursive
自定义模板: 可以发布并自定义工厂类的模板:
<pre class="brush:php;toolbar:false;">php artisan vendor:publish --tag="factory-generator"
总结
thedoctor0/laravel-factory-generator
以上就是告别手动编写:thedoctor0/laravel-factory-generator助你快速生成Laravel模型工厂的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号