Laravel 5.8 insertar un nuevo registro de usuario a una tabla existente

publicado por: Anonymous

En mi proyecto laravel funciona correctamente el login pro defecto que aparece al agregar en consola

>php artisan make:auth

mi tabla es la que tiene por defecto el proyecto nuevo de laravel 5.8 al usar

>php artisan migrate

decidi agregar un campo directamente en mi tabla xampp-> phpmyadmin despues de la columna name , la columna apellidoPaterno con un valor “AP”

al tratar de combrobar que todo funciona bien trate de registrar un nuevo usuario pero me sale error

Donde ejecuta la funcion/querry para insertar estos datos en una tabla SQL?

solución

Laravel tiene herramientas que facilitan el manejo de tablas de datos, su creación y modificación de manera rapida y automatica. Incluso con proyectos que ya están en uso y que no pueden por ningún motivo perder datos.

En todos mis proyectos siempre he tenido que hacer cambios en la estructura del modelo USER, casi siempre adicionando nuevas columnas, tales como ‘lastname’ y ‘role_id’.

Supongamos que queremos adicionar dos columnas ‘Lastname’ y ‘role_id’ porque queremos dar diferentes roles a nuestros usuarios. Hay CUATRO pasos:

1. Modifica Base de datos

Agregar una nueva “migration” asi:

php artisan make:migration add_new_columns_to_users

Esta acción creará una nueva migration en el directorio ‘databases/migration’ con el nombre: fecha_actual_add_new_columns_to_users.php

Edita la nueva “migration” como sigue:

public function up() { 
        Schema::table('users', function($table) { 
            $table->string('lastname');
            $table->integer('role_id')->unsigned()->index(); 
    }); 
}

public function down() { 
        Schema::table('users', function($table) { 
    $table->dropColumn(lastname);
        $table->dropColumn('role_id');
    }); 
}

Por ultimo usa el comando “migrate” para modificar la base de datos:

php artisan migrate

2 Actualiza el modelo USER. (user.php)

…
protected $fillable = [
    'firstname','lastname', 'email', 'password', 'role_id'
];
…

3. Actualiza el controlador de registro de usuario (app/http/controllers/auth/RegisterController.php):

El metodo de validacion:

...  
protected function validator(array $data)
   {
       return Validator::make($data, [
           'firstname' => ['required', 'string', 'max:255'],
           'lastname' => ['required', 'string', 'max:255'],
           'role_id' => ['required', 'integer'],
           'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
           'password' => ['required', 'string', 'min:6', 'confirmed'],
       ]);
   }
...

y el metodo de creación:

...
   protected function create(array $data)
   {
       return User::create([
           'name'      => $data['name'],
           'email'     => $data['email'],
           'password'  => Hash::make($data['password']),
           'role_id'   => 3,
           'lastname'  => $data['lastname'],
       ]);
   }
...

4 Actualizar los campos en el formulario de creación de usuarios.

Debes adicionar el campo “input” en el archivo HTML “resources/views/auth/register.blade.php” para aceptar el apellido (lastname).
Por supuesto, en el caso del ‘role_id’ de este ejemplo, seria un campo oculto en el formulario. Pero eso ya es HTML común y corriente.

Finalmente, en mi experiencia personal, debes siempre usar idioma ingles en el código (lastname). Nadie sabe quien va a leer tu código en el futuro.

Espero haberte ayudado

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *