Laravel 5.4
Awesome Laravel
- Awesome Laravel (Chirag Gude)
Prologue
- Release Notes
- Upgrade Guide
Getting Started
- Installation
- Configuration
- Directory Structure
- Laravel Homestead
- valet
Architecture Concepts
- Request Lifecycle
- Service Container
- Service Providers
- Facades
The Basics
- Routing
- Errors & Logging
- Middleware
- CSRF Protection
- Controllers
- HTTP Requests
- HTTP Responses
- Views
- HTTP Session
- Validation
Frontend
- Blade Templates
- Localization
- JavaScript & CSS Scaffolding
- Compiling Assets (Laravel Mix)
Security
- Authentication
- API Authentication (Passport)
- Authorization
- Encryption
- Hashing
- Resetting Passwords
Digging Deeper
- Artisan Console
- Queues
- Package Development
- Task Scheduling
- Broadcasting
- Cache
- Collections
- Events
- File Storage
- helpers
- Notifications
Database
- Database Getting Started
- Database Query Builder
- Database Pagination
- Database Migrations
- Database Seeding
- Redis
Eloquent ORM
- Eloquent Getting Started
- Eloquent Relationships
- Eloquent Collections
- Eloquent Mutators
- Eloquent Serialization
Testing
- Testing Getting Started
- HTTP Tests
- Browser Tests (Laravel Dusk)
- Database Testing
- Mocking
- redirect
Official Packages
- Laravel Cashier
- Envoy Task Runner
- Laravel Scout
Database Seeding
Introduction
Laravel includes a simple method of seeding your database with test data using seed classes. All seed classes are stored in the database/seeds
directory. Seed classes may have any name you wish, but probably should follow some sensible convention, such as UsersTableSeeder
, etc. By default, a DatabaseSeeder
class is defined for you. From this class, you may use the call
method to run other seed classes, allowing you to control the seeding order.
Writing Seeders
To generate a seeder, execute the make:seeder
Artisan command. All seeders generated by the framework will be placed in the database/seeds
directory:
|
A seeder class only contains one method by default: run
. This method is called when the db:seed
Artisan command is executed. Within the run
method, you may insert data into your database however you wish. You may use the query builder to manually insert data or you may use Eloquent model factories.
As an example, let’s modify the default DatabaseSeeder
class and add a database insert statement to the run
method:
|
Using Model Factories
Of course, manually specifying the attributes for each model seed is cumbersome. Instead, you can use model factories to conveniently generate large amounts of database records. First, review the model factory documentation to learn how to define your factories. Once you have defined your factories, you may use the factory
helper function to insert records into your database.
For example, let’s create 50 users and attach a relationship to each user:
|
Calling Additional Seeders
Within the DatabaseSeeder
class, you may use the call
method to execute additional seed classes. Using the call
method allows you to break up your database seeding into multiple files so that no single seeder class becomes overwhelmingly large. Simply pass the name of the seeder class you wish to run:
|
Running Seeders
Once you have written your seeder classes, you may use the db:seed
Artisan command to seed your database. By default, the db:seed
command runs the DatabaseSeeder
class, which may be used to call other seed classes. However, you may use the --class
option to specify a specific seeder class to run individually:
|
You may also seed your database using the migrate:refresh
command, which will also rollback and re-run all of your migrations. This command is useful for completely re-building your database:
|