rnr/laravel-alice

此包的最新版本(0.9.1)没有可用的许可信息。

laravel 的 alice 固件生成器包装器

0.9.1 2017-11-18 11:00 UTC

README

Package version Build Status

一个用于使用 nelmio/alice 管理固件的 Laravel 包。

安装

此包可以通过 Composer 安装,作为 rnr/laravel-alice

composer install --dev rnr/laravel-alice

基本用法

创建 yml 固件文件,如 nelmio/alice 所描述

Nelmio\Entity\User:
    user{1..10}:
        username: '<username()>'
        fullname: '<firstName()> <lastName()>'
        birthDate: '<date()>'
        email: '<email()>'
        favoriteNumber: '50%? <numberBetween(1, 200)>'

Nelmio\Entity\Group:
    group1:
        name: Admins
        owner: '@user1'
        members: '<numberBetween(1, 10)>x @user*'
        created: '<dateTimeBetween("-200 days", "now")>'
        updated: '<dateTimeBetween($created, "now")>'

FixturelLoader 有一个重要方法 load 用于加载模型。该方法接收一个或多个包含要加载数据的文件。您可以使用以下代码将此固件加载到数据库中

<?php
namespace Rnr\Tests\Alice;

use Orchestra\Testbench\TestCase as ParentTestCase;
use Rnr\Alice\FixturesLoader;
use Nelmio\Entity\User;
use Nelmio\Entity\Group;

class TestCase extends ParentTestCase
{
    /** @var FixturesLoader */
    protected $fixturesLoader;

    protected function setUp()
    {
        parent::setUp();

        $this->fixturesLoader = $this->app->make(FixturesLoader::class);
    }
    
    public function testLoadingFixtures() {
        $objects = $this->fixturesLoader->load('fixture.yml');
        
        $users = User::all();
        
        $this->assertEquals(array_map($objects, function ($model) {
            return $model->getKey();
        }), $users->modelKeys());
    }
}

它为以下模型加载数据

<?php
namespace Nelmio\Entity;

use Illuminate\Database\Eloquent\Model;

class User extends Model  {
    protected $table = 'users';
}

class Group extends Model {
    protected $table = 'groups';
    
    public function owner() {
        return $this->belnogsTo(User::class);
    }
}

限制

您可以使用 id 来指定关系中的相关模型,但这些模型应该已经在数据库中创建。

从数据库提取固件

如果您将 GenerateFixtureCommand 添加到您的控制台内核中,您可以从现有数据库中导出数据到 yml。此类向 artisan 添加了新命令 db:generate-fixture。此命令从数据库中提取固件。命令接受以特定格式表示的模型及其关系的数组

php artisan db:generate-fixture \
    'Nelmio\Entity\User(relations:relation1,realation2.subrelation)=1,2,3-5,17,20-25' \
    'Nelmio\Entity\Group(relations:hasOne)=*' > /path/to/fixture.yml