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.