phirational/laravel-conditional-seeder

此包已被弃用且不再维护。未建议替代包。
此包最新版本(1.0.2)没有提供许可信息。

Laravel trait 提供条件数据库播种方法。

1.0.2 2014-07-25 12:14 UTC

This package is not auto-updated.

Last update: 2018-03-29 11:36:35 UTC


README

为 Laravel 提供条件数据库播种方法的 PHP trait。

安装

phirational/laravel-conditional-seeder 添加到 composer.json 的 require 部分。

{
    "require": {
        "phirational/laravel-conditional-seeder": "~1.0"
    }
}

然后运行 composer installcomposer update

下一步

  • 在您的 DatabaseSeeder 类声明之前添加 use Phirational\LaravelConditionalSeeder\ConditionalSeeder;
  • DatabaseSeeder 类头部之后立即添加 use ConditionalSeeder; trait。
<?php

use Phirational\LaravelConditionalSeeder\ConditionalSeeder;

class DatabaseSeeder extends Seeder
{
    use ConditionalSeeder;
    
    public function run()
    {
        ...
    }
}

方法

### isInLastMigrations 确定迁移(或迁移)是否在最后一个迁移批次中

/**
 * @param string|array $migrations Migration name or array of migrations
 * @param bool $partialMatch Allow if just one matching migration is enough
 *
 * @return bool
 */
function isInLastMigrations($migrations, $partialMatch = false)

### isInRanMigrations 确定迁移(或迁移)是否在已运行的迁移之间

/**
 * @param string|array $migrations Migration name or array of migrations
 * @param bool $partialMatch Allow if just one matching migration is enough
 *
 * @return bool
 */
function isInRanMigrations($migrations, $partialMatch = false)

用法

在将 ConditionalSeeder trait 扩展到您的 DatabaseSeeder 之后,您可以使用 isInLastMigrationsisInRanMigrations 方法检查是否运行了某些迁移。

####简单检查

public function run()
{
    // Call ExampleTableSeeder when was '2014_05_15_001618_foo' in last migration batch
    if ($this->isInLastMigrations('2014_05_15_001618_foo'))
    {
        $this->call('ExampleTableSeeder');
    }

    // Call ExampleTableSeeder whenever was '2014_05_15_002342_bar' ran
    if ($this->isInRanMigrations('2014_05_15_002342_bar'))
    {
        $this->call('ExampleTableSeeder');
    }
}

####使用可选部分匹配检查多个迁移

public function run()
{
    // Call ExampleTableSeeder when was '2014_05_15_001618_foo' AND '2014_05_15_002342_bar' in last migration batch
    if ($this->isInLastMigrations(array('2014_05_15_001618_foo', '2014_05_15_002342_bar'), false))
    {
        $this->call('ExampleTableSeeder');
    }
    
    // Call ExampleTableSeeder when was '2014_05_15_001618_foo' OR '2014_05_15_002342_bar' in last migration batch
    if ($this->isInLastMigrations(array('2014_05_15_001618_foo', '2014_05_15_002342_bar'), true))
    {
        $this->call('ExampleTableSeeder');
    }
}