asvae/laravel-fixtures

0.1.2 2017-01-25 16:47 UTC

This package is not auto-updated.

Last update: 2022-09-17 16:09:51 UTC


README

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.

Installation

Install via composer:

composer require asvae/laravel-fixtures

To your App\Console\Kernel add command like this:

protected $commands = [
    // ...
    
    \Asvae\LaravelFixtures\Commands\FixtureRun::class,
];

Usage

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.

Config

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

FIXTURES_NAMESPACE=App\MyFixtures

Examples

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.

Hints

  • 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.