Download the PHP package cheesegrits/iseed without Composer
On this page you can find all versions of the php package cheesegrits/iseed. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download cheesegrits/iseed
More information about cheesegrits/iseed
Files in cheesegrits/iseed
Package iseed
Short Description This is a fork of the SchuBu/iseed of the original package Orangehill/Iseed. Generate a new Laravel database seed file based on data from the existing database table.
License BSD-2-Clause
Informations about the package iseed
This is my fork of orangehill/iseed. I updated a few things and added iseed:all command.
Inverse seed generator (Iseed) is a Laravel package that provides a method to generate a new seed file based on data from the existing database table.
Installation
1. Require with Composer
Laravel 5.3.7 and below or Laravel 4 need specific version.
2. Add Service Provider (Laravel 5.4 and below)
Latest Laravel versions have auto dicovery and automatically add service provider - if you're using 5.4.x and below, remember to add it to providers
array at /app/config/app.php
:
Artisan Commands
Iseed comes with two artisan commands:
php artisan iseed
php artisan iseed:all
php artisan iseed
php artisan iseed:all
Artisan Command Options
The primary artisan command (php artisan iseed
) contains a series of arguments (some required, some optional) you can use when calling the command.
[table_name]
Mandatory parameter which defines which table/s will be used for seed creation. Use CSV notation for multiple tables. Seed file will be generated for each table.
Examples:
classnameprefix & classnamesuffix
Optionally specify a prefix or suffix for the Seeder class name and file name. This is useful if you want to create an additional seed for a table that has an existing seed without overwriting the existing one.
Examples:
outputs CustomizedMyTableSeeder.php
outputs CustomizedMyTableSeeder.php
and CustomizedAnotherTableSeeder.php
outputs MyTableCustomizationsSeeder.php
outputs MyTableCustomizationsSeeder.php
and AnotherTableCustomizationsSeeder.php
force
Optional parameter which is used to automatically overwrite any existing seeds for desired tables.
Example:
The following command will overwrite UsersTableSeeder.php
if it already exists in Laravel's seeds directory.
dumpauto
Optional boolean parameter that controls the execution of composer dump-autoload
command. Defaults to true
.
Example that will stop composer dump-autoload
from execution:
clean
Optional parameter which will clean app/database/seeders/DatabaseSeeder.php
before creating new seed class.
Example:
database
Optional parameter which specifies the DB connection name.
Example:
max
Optional parameter which defines the maximum number of entries seeded from a specified table. In case of multiple tables, limit will be applied to all of them.
Example:
chunksize
Optional parameter which defines the size of data chunks for each insert query.
Example:
Please note that some users encountered a problem with large DB table exports. The issue is solved by splitting input data into smaller chunks of elements per insert statement. You may need to change the chunk size value in some extreme cases where a DB table has a large number of records, the chunk size is configurable in Iseed's config.php
file or via the artisan
command.
orderby
Optional parameter which defines the column which will be used to order the results by, when used in conjunction with the max parameter that allows you to set the desired number of exported database entries.
Example:
direction
Optional parameter which allows you to set the direction of the ordering of results; used in conjuction with orderby parameter.
Example:
exclude
Optional parameter which accepts comma separated list of columns that you'd like to exclude from tables that are being exported. In case of multiple tables, exclusion will be applied to all of them.
Example:
prerun
Optional parameter which assigns a laravel event name to be fired before seeding takes place. If an event listener returns false
, seed will fail automatically.
You can assign multiple preruns for multiple table names by passing an array of comma separated DB names and respectively passing a comma separated array of prerun event names.
Example:
The following command will make a seed file which will fire an event named someEvent
before seeding takes place.
The following example will assign someUserEvent
to users
table seed, and someGroupEvent
to groups
table seed, to be executed before seeding.
The following example will only assign a someGroupEvent
to groups
table seed, to be executed before seeding. Value for the users table prerun was omitted here, so users
table seed will have no prerun event assigned.
postrun
Optional parameter which assigns a laravel event name to be fired after seeding takes place. If an event listener returns false
, seed will be executed, but an exception will be thrown that the postrun failed.
You can assign multiple postruns for multiple table names by passing an array of comma separated DB names and respectively passing a comma separated array of postrun event names.
Example:
The following command will make a seed file which will fire an event named someEvent
after seeding was completed.
The following example will assign someUserEvent
to users
table seed, and someGroupEvent
to groups
table seed, to be executed after seeding.
The following example will only assign a someGroupEvent
to groups
table seed, to be executed after seeding. Value for the users table postrun was omitted here, so users
table seed will have no postrun event assigned.
noindex
By using --noindex
the seed can be generated as a non-indexed array.
The use case for this feature is when you need to merge two seed files.
Example:
Configuration
Iseed comes with the following configuration, to change the default first publish the configuration with:
path
Path where the seeders will be generated.
The default is /database/seeders
.
seeder_path
Path where the Seeder file is saved.
The default is /database/seeders/DatabaseSeeder.php
seeder_modification
Whether the Seeder should be modified after running the iseed
command.
The default is true
.
chunk_size
Maximum number of rows per insert statement.
The default is 500
.
stub_path
You may alternatively set a relative path to a custom stub file. Make sure to make path relative to your project root, e.g. 'stub_path' => 'stubs/seeder.stub'
or 'stub_path' => './stubs/seeder.stub'
but not 'stub_path' => '/stubs/seeder.stub'
.
The default stub file is located in /vendor/schubu/iseed/src/SchuBu/Iseed/Stubs/seed.stub
insert_command
You may customize the line that preceeds the inserts inside the seeder.
You MUST keep both %s
however, the first will be replaced by the table name and the second by the inserts themselves.
The default is \DB::table('%s')->insert(%s);
.
Usage
To generate a seed file for your individual tables simply call:
$tableName
needs to define the name of your table. There are also parameters you can pass to the generateSeed()
method which include:
Variable | Description | Default | Type | Required |
---|---|---|---|---|
$tableName | Table name | string | :white_check_mark: | |
$prefix | Seeder class prefix | null | string | :x: |
$suffix | Seeder class suffix | null | string | :x: |
$database | Database connection name | null | string | :x: |
$max | Maximum seeded entries | 0 | integer | :x: |
$chunkSize | Size of data chunks | 0 | integer | :x: |
$exclude | Columns to exclude | null | string | :x: |
$prerunEvent | Prerun event name | null | string | :x: |
$postrunEvent | Postrun event name | null | string | :x: |
$dumpAuto | Composer auto-dump | true | string | :x: |
$indexed | Indexed array | true | string | :x: |
$orderBy | Column to order by | null | string | :x: |
$direction | Default sort order | ASC | string | :x: |
For example, to generate a seed for your users
table you would call:
This will create a file inside the /database/seeders
folder (/database/seeds
for Laravel 5 to 7 and /app/database/seeds
for Laravel 4) called UsersTableSeeder.php
with the contents similar to following example:
This command will also update /database/seeders/DatabaseSeeder.php
(/database/seeds/DatabaseSeeder.php
for Laravel 5 to 7 and /app/database/seeds/DatabaseSeeder.php
for Laravel 4) to include a call to this newly generated seed class.
If you wish you can define a custom Iseed template in which all the calls will be placed. You can do this by using #iseed_start
and #iseed_end
templates anywhere within /database/seeders/DatabaseSeeder.php
(/database/seeds/DatabaseSeeder.php
for Laravel 5 to 7 and /app/database/seeds/DatabaseSeeder.php
for Laravel 4), for example:
Alternatively you can run Iseed from the command line using Artisan, e.g. php artisan iseed users
. For generation of multiple seed files comma separated list of table names should be send as an argument for command, e.g. php artisan iseed users,posts,groups
.
In case you try to generate a seed file that already exists the command will ask you a question whether you want to overwrite it or not. If you wish to overwrite it by default use the --force
artisan command option, e.g. php artisan iseed users --force
.
If you wish to clear the Iseed template you can use the --clean
artisan command option, e.g. php artisan iseed users --clean
. This will clean the template from database/seeders/DatabaseSeeder.php
before creating the new seed class.
You can specify a db connection that will be used for creation of new seed files by using the --database=connection_name
artisan command option, e.g. php artisan iseed users --database=mysql2
.
To limit the number of rows that will be exported from table use the --max=number_of_rows
artisan command option, e.g. php artisan iseed users --max=10
. If you use this option while exporting multiple tables the specified limit will be applied to all of them.
All versions of iseed with dependencies
illuminate/support Version ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0|^11.0