Seeding

Për të ushtruar me seeding, do ta marrim shembull tabelën users.

php artisan migrate

Me këtë, në një instalim të ri krijohet tabela e zbrazët users.

Krijimi i një seederi:

php artisan make:seeder UsersTableSeeder

Pas krijimit të seeder, mund të jetë e nevojshme:

composer dump-autoload

Me Query Builder

<?php
use Illuminate\Database\Seeder;
use Illuminate\Support\Facades\DB;

class DatabaseSeeder extends Seeder
{
    public function run()
    {
        DB::table('users')->insert([
            'name' => str_random(10),
            'email' => str_random(10).'@gmail.com',
            'password' => bcrypt('secret'),
        ]);
    }
}

Me Faker

Laravel përdor pakon: https://github.com/fzaninotto/Faker

Faker mund të përdoret për të gjeneruar të dhëna të tipeve vijuese:

  • Base
  • Lorem Ipsum Text
  • Person
  • Address
  • Phone Number
  • Company
  • Real Text
  • Date and Time
  • Internet
  • User Agent
  • Payment
  • Color
  • File
  • Image
  • Uuid
  • Barcode
  • Miscellaneous
  • Biased
  • Html Lorem
<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
    public function run()
    {
        $faker = Faker\Factory::create();

        $limit = 50;

        for ($i = 0; $i < $limit; $i++) {
            DB::table('users')->insert([ //,
                'name' => $faker->name,
                'email' => $faker->unique()->email,
                'password' => bcrypt('secret'),
                'remember_token' => str_random(10),
            ]);
        }
    }
}

Me Factory

Një factory e gjejmë të gatshëm në database/factories/UserFactory.php.

<?php
use Faker\Generator as Faker;
$factory->define(App\User::class, function (Faker $faker) {
    return [
        'name' => $faker->name,
        'email' => $faker->unique()->safeEmail,
        'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
        'remember_token' => str_random(10),
    ];
});

E thërrasim nga database/seeds/UsersTableSeeder:

<?php
use Illuminate\Database\Seeder;
class UsersTableSeeder extends Seeder
{
    public function run()
    {
        factory(App\User::class, 50)->create();
    }
}

Populimi i tabelave

Për një tabelë

php artisan db:seed --class=UsersTableSeeder

Të gjithë seeders

php artisan db:seed

Për këtë nevojitet që në database/seeds/DatabaseSeeder.php të shënohen seederat:

<?php
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
    public function run()
    {
        $this->call(UsersTableSeeder::class);

// ose per disa
    /*
        $this->call([
            UsersTableSeeder::class,
            PostsTableSeeder::class,
            CommentsTableSeeder::class,
        ]);
    */
    }
}

Seeder mund të thirren edhe gjatë ekzekutimit të migracioneve:

php artisan migrate --seed
php artisan migrate:refresh --seed