企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
Model Factory给我们生成测试数据提供了很多方便的地方 在database\ModelFactory.php文件中,里面可以理解定义了个全局变量$factory然后与数据库中Users这张表的字段一一对应 里面的Faker\Generator $faker用来生成一些伪数据 测试下,cmd中运行php artisan tinker进入交互页面 ~~~ >>> namespace App; => null >>> factory(User::class,5)->make(); => Illuminate\Database\Eloquent\Collection {#656 all: [ App\User {#652 name: "Lura Schmidt", email: "Daryl.Hansen@example.net", }, App\User {#650 name: "Anita Jacobson", email: "Unique.Keebler@example.com", }, App\User {#648 name: "Stefan Ortiz", email: "Klein.Quentin@example.org", }, App\User {#647 name: "Amos Crona", email: "pRuecker@example.net", }, App\User {#649 name: "Minerva Wunsch", email: "Nicklaus.Frami@example.net", }, ], } >>> ~~~ 上面指定5,就生成了5个数据,不会写到数据库中的 如果要写入就接着上面交互页面执行`factory(User::class,5)->create();`数据库中就有了 这边的$facker就是Facker\Generator的一个实例,我们可以把这个类重写下.为了不修改laravel源码,我们可以在app\Providers\AppServiceProvider.php编辑 ~~~ namespace App\Providers; use Illuminate\Support\ServiceProvider; use Faker\Generator as FakerGenerator; use Faker\Factory as FakerFactory; class AppServiceProvider extends ServiceProvider { /** * Bootstrap any application services. * * @return void */ public function boot() { //不要忘记上面命名空间 //singleton表示他会建singleton里面的类返回一个单例,在laravel全局使用 $this->app->singleton(FakerGenerator::class,function(){ return FakerFactory::create('zh_CN');//里面的参数可以将faker本地化 //可以到github上看fzaninotto/Faker/tree项目中看支持的语言 }); } //--- ~~~ cmd中运行php artisan tinker进入交互页面,执行上面的生成测试数据的操作就可以了