xengine/iseed

基于现有数据库表数据生成新的Laravel数据库种子文件。

此包的官方仓库似乎已不存在,因此该包已被冻结。

维护者

详细信息

github.com/XEngine/iseed

源码

v2.0 2015-03-17 14:16 UTC

This package is auto-updated.

Last update: 2023-06-29 01:14:34 UTC


README

逆向种子生成器(iSeed) 是一个Laravel包,提供了一种基于现有数据库表数据生成新种子文件的方法。

Build Status Latest Stable Version Total Downloads

安装

  1. 对于Laravel 5安装,请编辑项目中的composer.json文件以要求orangehill/iseed

    "require": { "orangehill/iseed": "dev-master" }

如果您想将其安装在Laravel 4上,应要求1.1版本

"require": {
	"orangehill/iseed": "1.1"
}
  1. 通过打开app/config/app.php文件并添加新项到providers数组来添加服务提供者。

    'Orangehill\Iseed\IseedServiceProvider'

  2. 从CLI更新Composer

    composer update

使用方法

要为您的用户表生成种子文件,只需调用:\Iseed::generateSeed('users', 'connectionName', 'numOfRows');connectionNamenumOfRows不是必需的参数。

这将在/database/seeds(Laravel 4为/app/database/seeds)内部创建一个文件,内容类似于以下示例

<?php

// File: /database/seeds/UsersTableSeeder.php

class UsersTableSeeder extends Seeder {

	/**
	 * Auto generated seed file
	 *
	 * @return void
	 */
	public function run()
	{
		\DB::table('users')->truncate();
		\DB::table('users')->insert(array (
			0 =>
			array (
				'id' => '1',
				'email' => 'admin@admin.com',
				'password' => '$2y$10$tUGCkQf/0NY3w1l9sobGsudt6UngnoVXx/lUoh9ElcSOD0ERRkK9C',
				'permissions' => NULL,
				'activated' => '1',
				'activation_code' => NULL,
				'activated_at' => NULL,
				'last_login' => NULL,
				'persist_code' => NULL,
				'reset_password_code' => NULL,
				'first_name' => NULL,
				'last_name' => NULL,
				'created_at' => '2013-06-11 07:47:40',
				'updated_at' => '2013-06-11 07:47:40',
			),
			1 =>
			array (
				'id' => '2',
				'email' => 'user@user.com',
				'password' => '$2y$10$ImNvsMzK/BOgNSYgpjs/3OjMKMHeA9BH/hjl43EiuBuLkZGPMuZ2W',
				'permissions' => NULL,
				'activated' => '1',
				'activation_code' => NULL,
				'activated_at' => NULL,
				'last_login' => '2013-06-11 07:54:57',
				'persist_code' => '$2y$10$C0la8WuyqC6AU2TpUwj0I.E3Mrva8A3tuVFWxXN5u7jswRKzsYYHK',
				'reset_password_code' => NULL,
				'first_name' => NULL,
				'last_name' => NULL,
				'created_at' => '2013-06-11 07:47:40',
				'updated_at' => '2013-06-11 07:54:57',
			),
		));
	}

}

此命令还将更新/database/seeds/DatabaseSeeder.php(Laravel 4为/app/database/seeds/DatabaseSeeder.php)以包含对新生成的种子类的调用。

如果您愿意,可以定义自定义iSeed模板,其中所有调用都将放置。您可以通过在/database/seeds/DatabaseSeeder.php(Laravel 4为/app/database/seeds/DatabaseSeeder.php)中的任何位置使用#iseed_start#iseed_end模板来完成此操作,例如

<?php

// File: /database/seeds/DatabaseSeeder.php
class DatabaseSeeder extends Seeder {

	/**
	 * Run the database seeds.
	 *
	 * @return void
	 */
	public function run()
	{
		Eloquent::unguard();

	    if(App::environment() == "local")
	    {
	        throw new \Exception('Only run this from production');
	    }
		
		#iseed_start
		
		// here all the calls for newly generated seeds will be stored. 

		#iseed_end
	}

}

或者,您可以从命令行使用Artisan运行Iseed,例如php artisan iseed users。对于生成多个种子文件,应将表名列表以逗号分隔的形式作为命令的参数发送,例如php artisan iseed users,posts,groups

如果您尝试生成已存在的种子文件,命令将询问您是否要覆盖它。如果您默认希望覆盖它,请使用Artisan命令选项--force,例如php artisan iseed users --force

如果您想清除iSeed模板,可以使用Artisan命令选项--clean,例如php artisan iseed users --clean。这将清除模板从app/database/seeds/DatabaseSeeder.php

您可以通过使用Artisan命令选项--database=connection_name指定用于创建新种子文件的数据库连接,例如php artisan iseed users --database=mysql2

要限制从表中导出的行数,请使用Artisan命令选项--max=number_of_rows,例如php artisan iseed users --max=10。如果您在导出多个表时使用此选项,则将应用此限制到所有表。

要导出整个数据库,请使用--all=true,并使用all代替表名。例如

php artisan iseed --all=true all

要(重新)播种数据库,请转到终端并运行Laravel的db:seed命令(php artisan db:seed)。

请注意,一些用户遇到了导出大型数据库表的问题(从具有许多记录的表播种时的错误)。问题通过将输入数据分割成更小的元素块来解决,每个插入语句一个块。在某些极端情况下,如果数据库表有大量列,您可能需要更改块大小值,iSeed的config.php文件中的块大小是可配置的。

'chunk_size' => 500 // Maximum number of rows per insert statement