Buscar..


Observaciones

La base de datos de base de datos le permite insertar datos, datos de prueba generales en su base de datos. Por defecto, hay una clase DatabaseSeeder en la database/seeds .

Las sembradoras se pueden hacer con

php artisan db:seed

O si solo quieres procesar una sola clase.

php artisan db:seed --class=TestSeederClass

Al igual que con todos los comandos artesanales, tiene acceso a una amplia gama de métodos que se pueden encontrar en la documentación de la API.

Insertando datos

Hay varias formas de insertar datos:

Usando el DB Facade

public function run()
{
    DB::table('users')
        ->insert([
            'name' => 'Taylor',
            'age'  => 21
        ]);
}

A través de la creación de un modelo

public function run()
{
    $user = new User;
    $user->name = 'Taylor';
    $user->save();
}

Usando el método de crear

public function run()
{
    User::create([
        'name' => 'Taylor',
        'age'  => 21
    ]);
}

Usando la fábrica

public function run()
{
    factory(App\User::class, 10)->create();
}

Sembrando && eliminando datos antiguos y reiniciando auto-incremento

public function run()
{
    DB::table('users')->delete();
    DB::unprepared('ALTER TABLE users AUTO_INCREMENT=1;');
    factory(App\User::class, 200)->create();
}

Consulte el ejemplo Persistente para obtener más información sobre cómo insertar / actualizar datos.

Llamando a otros sembradores

Dentro de su clase DatabaseSeeder puede llamar a otros sembradores

$this->call(TestSeeder::class)

Esto le permite guardar un archivo donde puede encontrar fácilmente sus sembradoras. Tenga en cuenta que debe prestar atención al orden de sus llamadas con respecto a las restricciones de clave externa. No puede hacer referencia a una tabla que aún no existe.

Creando una Sembradora

Para crear sembradoras, puede usar el comando make:seeder Artisan. Todas las sembradoras generadas se colocarán en la database/seeds directorio de database/seeds .

$ php artisan make:seeder MoviesTableSeeder

Las sembradoras generadas contendrán un método: run . Puede insertar datos en su base de datos en este método.

<?php

use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;

class MoviesTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        App\Movie::create([
            'name' => 'A New Hope',
            'year' => '1977'
        ]);

        App\Movie::create([
            'name' => 'The Empire Strikes Back',
            'year' => '1980'
        ]);
    }
}

Generalmente deseará llamar a todos sus sembradores dentro de la clase DatabaseSeeder .

Una vez que haya terminado de escribir las sembradoras, use el comando db:seed . Esto run función de ejecución de DatabaseSeeder .

$ php artisan db:seed

También puede especificar que se ejecute una clase de sembradora específica para ejecutar individualmente usando la opción --class .

$ php artisan db:seed --class=UserSeeder

Si desea revertir y volver a ejecutar todas las migraciones, y luego reinicie:

$ php artisan migrate:refresh --seed

El comando migrate:refresh --seed es un acceso directo a estos 3 comandos:

$ php artisan migrate:reset     # rollback all migrations
$ php artisan migrate           # run migrations
$ php artisan db:seed           # run seeders

Resiembra segura

Es posible que desee volver a sembrar su base de datos sin afectar sus semillas creadas previamente. Para este propósito, puede usar firstOrCreate en su sembradora:

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);

Luego puedes sembrar la base de datos:

php artisan db:seed

Más adelante, si desea agregar otro tipo de empleado, simplemente puede agregar ese nuevo en el mismo archivo:

EmployeeType::firstOrCreate([
    'type' => 'manager',
]);
EmployeeType::firstOrCreate([
    'type' => 'secretary',
]);

Y siembra de nuevo tu base de datos sin problemas:

php artisan db:seed

Observe que en la primera llamada está recuperando el registro pero sin hacer nada con él.



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow