usuario una tabla para migraciones migracion instalar especifica ejecutar crear comando php laravel migration mysql-error-1146

php - una - nothing to migrate.



Poblando una base de datos en un archivo de migraciĆ³n de Laravel (5)

Aquí hay una muy buena explicación de por qué es preferible usar el Sembrador de Bases de Datos de Laravel al uso de Migraciones: http://laravelbook.com/laravel-database-seeding/

Aunque, seguir las instrucciones en la documentación oficial es una idea mucho mejor porque la implementación descrita en el enlace anterior no parece funcionar y está incompleta. http://laravel.com/docs/migrations#database-seeding

Estoy aprendiendo Laravel y tengo un archivo de migración en funcionamiento que crea una tabla de usuarios. Estoy intentando completar un registro de usuario como parte de la migración:

public function up() { Schema::create(''users'', function($table){ $table->increments(''id''); $table->string(''email'', 255); $table->string(''password'', 64); $table->boolean(''verified''); $table->string(''token'', 255); $table->timestamps(); DB::table(''users'')->insert( array( ''email'' => ''[email protected]'', ''verified'' => true ) ); }); }

Pero recibo el siguiente error al ejecutar php artisan migrate :

SQLSTATE[42S02]: Base table or view not found: 1146 Table ''vantage.users'' doesn''t exist

Obviamente, esto es porque Artisan aún no creó la tabla, pero toda la documentación parece indicar que hay una forma de utilizar Fluent Query para completar los datos como parte de una migración.

Alguien sabe como? ¡Gracias!


Esto debería hacer lo que quieras.

public function up() { DB::table(''user'')->insert(array(''username''=>''dude'', ''password''=>''z19pers!'')); }


No coloque DB :: insert () dentro de Schema :: create (), porque el método de creación tiene que terminar de hacer la tabla antes de que pueda insertar cosas. Pruebe esto en su lugar:

public function up() { // Create the table Schema::create(''users'', function($table){ $table->increments(''id''); $table->string(''email'', 255); $table->string(''password'', 64); $table->boolean(''verified''); $table->string(''token'', 255); $table->timestamps(); }); // Insert some stuff DB::table(''users'')->insert( array( ''email'' => ''[email protected]'', ''verified'' => true ) ); }


Sé que esta es una publicación anterior, pero dado que aparece en una búsqueda en Google, pensé que compartiría algunos conocimientos aquí. @ erin-geyer señaló que mezclar migraciones y sembradoras puede generar dolores de cabeza y @justamartin respondió que a veces se necesita / necesita datos que se llenen como parte de su implementación.

Daría un paso más y diría que a veces es deseable poder implementar cambios de datos consistentemente para que pueda, por ejemplo, implementar en etapas, ver que todo esté bien y luego implementar en producción con la confianza de los mismos resultados (y no tiene que recordar ejecutar un paso manual).

Sin embargo, todavía hay valor para separar la semilla y la migración ya que son dos preocupaciones relacionadas pero distintas. Nuestro equipo se ha comprometido creando migraciones que llaman a las sembradoras. Esto se ve así:

public function up() { Artisan::call( ''db:seed'', [ ''--class'' => ''SomeSeeder'', ''--force'' => true ] ); }

Esto le permite ejecutar una semilla una vez como una migración. También puede implementar lógica que previene o aumenta el comportamiento. Por ejemplo:

public function up() { if ( SomeModel::count() < 10 ) { Artisan::call( ''db:seed'', [ ''--class'' => ''SomeSeeder'', ''--force'' => true ] ); } }

Obviamente, esto ejecutaría condicionalmente su sembradora si hay menos de 10 modelos de algunos. Esto es útil si desea incluir la sembradora como una sembradora estándar que se ejecuta al llamar a artisan db:seed y al migrar para que no se "duplique". También puedes crear una sembradora inversa para que los retrocesos funcionen como se espera, por ejemplo

public function down() { Artisan::call( ''db:seed'', [ ''--class'' => ''ReverseSomeSeeder'', ''--force'' => true ] ); }

El segundo parámetro --force es necesario para permitir que seeder se ejecute en un entorno de producción.


intentar: (no probado)

public function up() { Schema::table(''users'', function($table){ $table->increments(''id''); $table->string(''email'', 255); $table->string(''password'', 64); $table->boolean(''verified''); $table->string(''token'', 255); $table->timestamps(); $table->insert( array( ''email'' => ''[email protected]'', ''verified'' => true ) ); }); }