Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Trabajando con un Modelo

11/25
Recursos
  • No es aconsejable modificar una migración ya que si estamos trabajando en equipo alguien puede haber ya corrido la migración con anterioridad y esto le causaría conflictos. Lo aconsejable es crear una migración adicional.
  • El comando migrate:fresh lo reinicia todo incluyendo la base de datos y los elementos creados.

Aportes 29

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

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:

  • Cada vez que queramos modificar algo en las migraciones es preferible crear una antes de modificar una existente haciendo referencia a la modificacion que vamos a realizar siguiendo la sintaxis de el comando make:migration -help

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.