Para crear la columna title después de la columna ‘id’ y que esté mejor estruturado:
$table->text(‘title’)->after(‘id’);
Introducción
Intro y caracteristicas de Laravel
Fundamentos
Instalación de Laravel
Primer ruta en laravel
Cómo funciona Blade
Controladores en Laravel
Request
Configuración de laravel
Bases de Datos
Cómo funcionan las Migraciones de DB
Migraciones en Artisan
Modelos con Eloquent
Trabajando con un Modelo
Operaciones CRUD
Controladores y recursos
Blade layout
Form para agregar reportes
CSRF
Fake PUT/PATCH
Borrando reportes
Validaciones
Relaciones en bases de datos
Creamos la vista de reportes
Relaciones con eloquent
Trabajando con relaciones
Emails
Acción para enviar un mail
Enviando emails
Autenticación
Login
Cierre
Cierre
Aún no tienes acceso a esta clase
Crea una cuenta y continúa viendo este curso
Aportes 29
Preguntas 3
Para crear la columna title después de la columna ‘id’ y que esté mejor estruturado:
$table->text(‘title’)->after(‘id’);
Por eso odio las versiones de Laravel, después te salen con el siguiente error a la hora de hacer lo que el maestro hace y no sabes por que.
Este error salio:
Symfony\Component\Debug\Exception\FatalThrowableError : syntax error, unexpected ':', expecting ',' or ')'
Pero claro que después de un rato el batallar por que revisar el código del maestro y el tuyo y es igual.
Pero la bronca es la versión de Laravel el cual modifica ciertos detalles como lo que encontré para que funcionara.
Codigo del maestro:
$table->text( column: 'title' );
Mi código
$table->text( 'title' );
Se quita el column:, el 2 puntos marca el error. Por si alguien le salio mal.
¿Utilizamos tinker porque aún no tenemos creado una UI?
Si estas trabajando en la version 6 de laravel, ya no es necesario poner columns dentro de los paréntesis
laravel#creandocolumnas
public function up()
{
Schema::table('expense_reports', function (Blueprint $table) {
$table->text('title');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('expense_reports', function (Blueprint $table) {
$table->dropColumn('title');
});
}
Además de los tipos de columna, hay varios “modificadores” de columna que se pueden utilizar al añadir una columna a una tabla de base de datos. Por ejemplo, para hacer que la columna “title” esté después de la columna “id”, debes utilizar el siguiente método:
$table->text('title')->after('id');
En lugar de escribir:
App\Models\expenseReport::all();
Podemos escribir:
$report::all();
Esto debido a que ya habiamos almacenado en la variable $report una instancia de la clase ExpenseReport.
Si están utilizando postgres 10, en vez de mysql, tuve el siguiente error.
Illuminate\Database\QueryException : SQLSTATE[23502]: Not null violation: 7 ERROR: column "title" contains null values
(SQL: alter table "expense_reports" add column "title" text not null)
Lo resolví anexando:
$table->text('title')->nullable();
Por si gustan intentar con postgres.
Apuntes:
Las migraciones practicamente nunca las modificamos, practicamente lo que hacemos es agregar una migracion adicional haciendo referencia a la tabla a la que vamos a realizar la modificacion, de esta forma si alguien ya corrió la primera migracion que hacia referencia a dicha tabla, con el nuevo envío, se va a realizar la modificacion. Para ello podemos escribir algo como lo siguiente:
php artisan make:migration create_column_title_in_reports --table=expense_reports
De esta manera, al notificar mediante el comando, que vamos a trabajar sobre una tabla, veremos espacios en los respectivos metodos de migracion del archivo creado para trabajar sobre ellos.
Les comparto el link actualizado con la documentación de Eloquent:
https://laravel.com/docs/7.x/eloquent
Estoy estancado hace varios días en esta lección, al utilizar tinker tengo errores como este PHP Warning: Creating default object from empty value in Psy Shell code on line 1
Alguna solución?
Hasta el momento todo va perfecto, se siente muy bien cuanto todo sale a la primera
Es hermoso que todo funcione a la primera
excelente para comenzar con lo básico de migraciones
Para poder colocar la columna ‘title’ despues de la columna ‘id’ y asi tener una mejor estructura coloquen esto:
$table->text('title')->after('id');
Excelente clase
Excelente los modelos las migraciones
Notas:
Tip del mentor: No edites de forma directa la migración, crea una nueva con la información, para así cuando se corran las migraciones todo el equipo pueda correr las migraciones que hagan falta
trabajando con migraciones.
muy buenos dias, yo utilizo postgres, a la hora de crear el la clumna ‘title’ lo hago con varchar pero sale un error, solo me deja con text, que debo hacer para seguir con varchar, gracias!
Les comparto los comandos usados con tinker:
php artisan tinker
Psy Shell v0.10.4 (PHP 7.4.2 — cli) by Justin Hileman
>>> $report = new App\ExpenseReport();
=> App\ExpenseReport {#3028}
>>> $report->title = 'Vacaciones';
=> "Vacaciones"
>>> $report->save();
=> true
>>> App\expenseReport::all();
=> Illuminate\Database\Eloquent\Collection {#3753
all: [
App\ExpenseReport {#3752
id: 1,
created_at: "2020-05-18 20:04:15",
updated_at: "2020-05-18 20:04:15",
title: "Vacaciones",
},
],
}
Se puede crear una migración con todas las columnas que quiero definir en mi base de datos, o habría que crear una migración por cada columna que se quiera añadir?
Todo va saliendo muy bien , excelente explicación.
Algunas veces me cuestiono el porque hacen tan complicado algo que a travez de muchos años se normalizo a nivel grafico.Y si, yo se que el manejo de comandos es de antaño y demuestra el nivel de conocimiento del profesional para nunca quedarce barado, pero pues hasta eso tiene solucion con los instrumentos portables … Bueno es solo un concepto de mi parte.
Que gustoso se siente cuando tu base de datos agrega sin ningún problema cada información, después de haber pasada media hora viendo el tipo de cada dato que incluye Eloquent.
hola a alguien le salió este error
$report = new App\ExpenseReport();
PHP Fatal error: Class ‘App/ExpenseReport’ not found in Psy Shell code on line 1
y esto se puede hacer para una bd ya existente en produccion y que no borre los datos?
El método down siempre es la acción contraria a la que se hace en el método up, esto es porque cuando hacemos un rollback, Laravel accede al método down para hacer el rollback correctamente. Es por eso que siempre es necesario e importante tenerlo programado:D!
![](
Alguien con este problema? stackoverflow me dice que actualice a la versión 6 o 7.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.