No puedo entender cómo agregar una nueva columna a mi tabla de base de datos existente usando el marco Laravel.
Traté de editar el archivo de migración usando ...
<?php
public function up()
{
Schema::create('users', function ($table) {
$table->integer("paid");
});
}
En terminal, ejecuto php artisan migrate:install
y migrate
.
¿Cómo agrego nuevas columnas?
php
laravel
laravel-4
laravel-migrations
Kim Larsen
fuente
fuente
Respuestas:
Para crear una migración, puede usar el comando migrate: make en la CLI de Artisan. Use un nombre específico para evitar chocar con modelos existentes
para Laravel 3:
para Laravel 5+:
Luego debe usar el
Schema::table()
método (ya que está accediendo a una tabla existente, no creando una nueva). Y puede agregar una columna como esta:y no olvides agregar la opción de reversión:
Entonces puedes ejecutar tus migraciones:
Todo esto está bien cubierto en la documentación de ambos Laravel 3:
Y para Laravel 4 / Laravel 5:
Editar:
use
$table->integer('paid')->after('whichever_column');
para agregar este campo después de una columna específica.fuente
php artisan migrate
php artisan make:migration add_paid_to_users
Agregaré la respuesta de mike3875 para futuros lectores que utilicen Laravel 5.1 y posteriores.
Para hacer las cosas más rápido, puede usar la bandera "--table" de esta manera:
Esto agregará el contenido del método
up
ydown
automáticamente:Del mismo modo, puede usar la
--create["table_name"]
opción al crear nuevas migraciones que agregarán más repeticiones a sus migraciones. Pequeño punto, pero útil cuando se hacen muchos de ellos.fuente
Blueprint
se agregó en Laravel 5.1. Solo un punto de aclaración es todo.Si está utilizando Laravel 5, el comando sería;
Todos los comandos para hacer cosas (controladores, modelos, migraciones, etc.) se han movido bajo el
make:
comando.php artisan migrate
Sin embargo, sigue siendo el mismo.fuente
laravel 5.6 y superior
en caso de que desee agregar una nueva columna como CLAVE EXTRANJERA a una tabla existente.
Cree una nueva migración ejecutando este comando: make: Migration
Ejemplo:
En la carpeta de base de datos / migraciones tiene un nuevo archivo de migración, algo como:
2018_08_08_093431_add_store_id_to_users_table.php (ver los comentarios)
Después de eso ejecuta el comando:
En caso de que desee deshacer la última migración por algún motivo, ejecute este comando:
Puede encontrar más información sobre migraciones en los documentos
fuente
Puede agregar nuevas columnas dentro del
Schema::create
método inicial como este:Si ya ha creado una tabla, puede agregar columnas adicionales a esa tabla creando una nueva migración y utilizando el
Schema::table
método:La documentación es bastante exhaustiva sobre esto, y no ha cambiado demasiado de la versión 3 a la versión 4 .
fuente
create_users_table
, entonces si estoy añadiendo columnas:add_email_password_columns_to_users
.add_
verbo " " al frente de cada archivo para realizar un seguimiento de los cambios. de esta manera es más fácil rastrear los cambios para el control de versiones, etc. porque se crea un nuevo archivo de adición para cada iteración. Si simplemente fue y siguió modificando el "create_
", sería difícil saber que x empleado, había estropeado algo al eliminar un índice o agregar una nueva columna, etc., ¡al menos eso tiene sentido en mi cabeza! :)simplemente puede modificar su archivo de migración existente, por ejemplo agregando una columna en su tabla, y luego en su terminal escribiendo:
fuente
esto se trabaja en laravel 5.1.
primero, en su terminal ejecute este código
después de eso, vaya al directorio de su proyecto y expanda la base de datos del directorio: migración y edite el archivo add_paid_to_users.php, agregue este código
después de eso vuelve a tu terminal y ejecuta este comando
espero que esto ayude.
fuente
Primero revierta su migración anterior
Después de eso, puede modificar su archivo de migración existente (agregar nuevas, renombrar o eliminar columnas) y luego volver a ejecutar su archivo de migración
fuente
Aunque un archivo de migración es la mejor práctica, como han mencionado otros, en un apuro también puede agregar una columna con tinker.
Aquí hay un ejemplo de una línea para la terminal:
(Aquí está formateado para facilitar la lectura)
fuente