目录
1. Create a Seeder File
2. Call Seeders from the DatabaseSeeder
3. Run the Seeder
4. Optional: Seed Specific Classes
Tips for Effective Seeding
首页 php框架 Laravel 如何在Laravel中播种数据库?

如何在Laravel中播种数据库?

Jul 28, 2025 am 04:23 AM
laravel 数据库

创建seeder文件:使用php artisan make:seeder UserSeeder生成seeder类,并在run方法中通过模型工厂或数据库查询插入数据;2. 在DatabaseSeeder中调用其他seeder:通过$this->call()按顺序注册UserSeeder、PostSeeder等,确保依赖关系正确;3. 运行seeder:执行php artisan db:seed运行所有注册的seeder,或使用php artisan migrate:fresh --seed重置并重新填充数据;4. 可选地单独运行特定seeder:使用php artisan db:seed --class=UserSeeder仅执行指定seeder;建议使用模型工厂生成真实数据,仅在本地环境播种,注意外键依赖顺序,避免生产环境误操作,从而有效管理数据库初始数据。

How to seed a database in Laravel?

Seeding a database in Laravel is a straightforward process that lets you populate your database with test or initial data. Here's how to do it properly.

How to seed a database in Laravel?

1. Create a Seeder File

Laravel uses seeder classes to insert data. You can create one using Artisan:

php artisan make:seeder UserSeeder

This creates a file in database/seeders/UserSeeder.php.

How to seed a database in Laravel?

Inside the run() method, you can add Eloquent model instances or DB queries:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;
use App\Models\User;

class UserSeeder extends Seeder
{
    public function run()
    {
        User::factory()->create([
            'name' => 'John Doe',
            'email' => 'john@example.com',
        ]);

        // Or create multiple users using the factory
        User::factory()->count(10)->create();
    }
}

? Make sure you have a corresponding model and factory if you're using User::factory().

How to seed a database in Laravel?

2. Call Seeders from the DatabaseSeeder

The main seeder is DatabaseSeeder (database/seeders/DatabaseSeeder.php). Use it to call other seeders:

<?php

namespace Database\Seeders;

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        $this->call([
            UserSeeder::class,
            PostSeeder::class,
            CommentSeeder::class,
        ]);
    }
}

This ensures your seeders run in order.


3. Run the Seeder

To run the seeder:

php artisan db:seed

This runs the DatabaseSeeder, which in turn calls any others you've specified.

? If you want to reset the database first (migrate fresh and seed), use:

php artisan migrate:fresh --seed

Or seed after regular migration:

php artisan migrate
php artisan db:seed

4. Optional: Seed Specific Classes

You can run a single seeder without affecting others:

php artisan db:seed --class=UserSeeder

Useful during development when testing data.


Tips for Effective Seeding

  • Use Model Factories: Define factories in database/factories/ to generate realistic data.

  • Check Environment: Avoid seeding in production unless necessary:

    public function run()
    {
        if (app()->environment('local')) {
            // Only seed test data in local
            User::factory()->count(50)->create();
        }
    }
  • Handle Foreign Keys: If your tables have relationships, make sure to seed parent tables first (e.g., users before posts).


  • Basically, Laravel’s seeder system gives you full control over initial data. Just create the classes, call them in order, and use db:seed when needed. Not complicated — but powerful when combined with factories.

    以上是如何在Laravel中播种数据库?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Stock Market GPT

Stock Market GPT

人工智能驱动投资研究,做出更明智的决策

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何在MySQL中显示所有数据库 如何在MySQL中显示所有数据库 Aug 08, 2025 am 09:50 AM

要显示MySQL中的所有数据库,需使用SHOWDATABASES命令;1.登录MySQL服务器后执行SHOWDATABASES;命令即可列出当前用户有权访问的所有数据库;2.系统数据库如information_schema、mysql、performance_schema和sys默认存在,但权限不足的用户可能无法看到;3.也可通过SELECTSCHEMA_NAMEFROMinformation_schema.SCHEMATA;查询并筛选数据库,例如排除系统数据库以仅显示用户创建的数据库;确保使用

如何在Laravel雄辩中使用子征服? 如何在Laravel雄辩中使用子征服? Aug 05, 2025 am 07:53 AM

laravelleloquentsuportsubqueriesInSelect,从哪里,andorderbyClauses启用Feflexibledataretievalwithoutrawsql; 1.UseselectSub()toaddcompentedColumnSlumnsLikePostCountCountCountCountCountPeruser; 2.Usefromsub; 2.usefromsub; 2.Usefromsub orclosolusoblesoblesoboledInfom()

如何通过Laravel收银员处理重复的付款? 如何通过Laravel收银员处理重复的付款? Aug 06, 2025 pm 01:38 PM

InstallLaravelCashierviaComposerandconfiguremigrationandBillabletrait.2.CreatesubscriptionplansinStripeDashboardandnoteplanIDs.3.CollectpaymentmethodusingStripeCheckoutandstoreitviasetupintent.4.SubscribeusertoaplanusingnewSubscription()anddefaultpay

如何在拉维尔安排工匠司令部 如何在拉维尔安排工匠司令部 Aug 14, 2025 pm 12:00 PM

定义调度:在App\Console\Kernel类的schedule方法中使用Schedule对象配置Artisan命令调度;2.设置频率:通过everyMinute、daily、hourly等链式方法或cron语法设定执行频率;3.传递参数:使用数组或字符串向命令传递参数;4.调度Shell命令:使用exec方法运行系统命令;5.添加条件:使用when、weekdays等方法控制执行时机;6.输出处理:使用sendOutputTo、appendOutputTo或emailOutputTo记录或

ORA-01017:无效的用户名/密码;登录被拒绝 ORA-01017:无效的用户名/密码;登录被拒绝 Aug 16, 2025 pm 01:04 PM

遇到ORA-01017错误时,说明登录被拒绝,主要原因为用户名或密码错误或账户状态异常,1.首先手动核对用户名和密码,注意大小写及特殊字符需用双引号包裹;2.确认连接的服务名或SID正确,可通过tnsping测试连接;3.检查账户是否被锁定或密码过期,需DBA查询dba_users视图确认状态;4.若账户锁定或过期,需执行ALTERUSER命令解锁并重置密码;5.注意Oracle11g及以上版本默认区分密码大小写,需确保输入精确匹配;6.登录SYS等特殊用户时应使用assysdba方式,并确保密

如何在Laravel中使用软删除 如何在Laravel中使用软删除 Aug 13, 2025 am 06:54 AM

SoftdeletesinLaravelallowyoutomarkrecordsasdeletedwithoutremovingthemfromthedatabasebysettingadeleted_attimestamp,whichenablesdatarecoverywhenneeded.1.AddtheSoftDeletestraittoyourmodel:importanduseIlluminate\Database\Eloquent\SoftDeletesinyourmodelcl

如何与Laravel模型和迁移中的枚举合作? 如何与Laravel模型和迁移中的枚举合作? Aug 16, 2025 am 10:29 AM

使用字符串字段和PHP枚举是Laravel中处理枚举的最佳方式。1.在迁移中使用string类型字段并可选添加checkIn约束;2.定义带有字符串backing值的PHP枚举(PHP8.1 );3.在模型中通过$casts将字段自动转换为枚举实例;4.在表单验证中使用Rule::in(Enum::values())确保输入合法;5.在工厂和种子文件中使用Enum::cases()或fake()->enum()生成测试数据;6.查询时使用枚举的->value属性或直接比较枚举实例。该

如何在Laravel中使用雄辩 如何在Laravel中使用雄辩 Aug 21, 2025 pm 02:30 PM

创建模型和迁移:使用phpartisanmake:modelPost-m生成模型和迁移文件,定义表结构后运行phpartisanmigrate;2.基本CRUD操作:通过Post::all()、find()、create()、save()和delete()方法实现数据的查询、创建、更新和删除;3.使用Eloquent关联:在模型中定义belongsTo和hasMany关系,并通过with()方法实现关联数据的预加载以避免N 1查询问题;4.Eloquent查询:利用查询构造器链式调用如where

See all articles