When working with database, sometimes we need to modify schema, and sometimes data. Doing both things in laravel migrations is painful. This package gives simple means to keep two of them separately.
Install via composer:
composer require asvae/laravel-fixtures
App\Console\Kernel add command like this:
protected $commands = [ // ... \Asvae\LaravelFixtures\Commands\FixtureRun::class, ];
For your fixtures be sure to extend
\Asvae\LaravelFixtures\AbstractFixture class or at least implement
Asvae\LaravelFixtures\FixtureContract. Abstract class has several utility methods to keep you going:
$this->runFixture($className); // Runs another fixture. $this->runArray($className); // Run [nested] array of fixtures
To run fixture do
php artisan fixture:run "\App\Fixtures\YourFixture". This will basically run
run method in given class, while also resolving dependencies in case you defined any in constructor.
No config file provided as the library is way too small. You can define default namespace in
.env file though. This will be used when you pass class name without namespace
Take a look at several examples. For the case depicted, in production, to fully migrate data you will run
php artisan fixture:run "\Asvae\LaravelFixtures\Examples\FixtureSet"
In development, to refresh single table you will run solitary fixtures as these are much faster.
- You can copy namespaced class name in PHPStorm by placing cursor onto class name and pressing
Ctrl (⌘) + Shift + Alt + C
- If you want to add some functionality, feel free to just copy package in your project. Several classes won't hurt.
- Spread a word or leave a star if what I did was helpful for you.