En este post te mostraré cómo puedes agregar campos de la tabla “users” en Laravel para así poder añadir algunos campos al modelo User. Explicado con otras palabras vamos a modificar la tabla de usuarios.
Con este modelo me refiero al usuario que se usa para iniciar sesión y en general hacer la autenticación en Laravel. Veremos cómo agregar otro campo además de los que ya existen.
Modificar tabla
Comencemos modificando la tabla, y para ello vamos a crear una migración. En mi caso agregué a mis usuarios un campo llamado “Nombre del establecimiento” por lo que generé la migración así:
php artisan make:migration AgregarNombreEstablecimientoAUsuarios --table=users
No olvides especificar el nombre de la tabla que en este caso es users. Ya dentro de la migración, agregué la columna y le coloqué un valor por defecto. Se ve así:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AgregarNombreEstablecimientoAUsuarios extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->string("nombre_establecimiento")->default("");
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {
$table->dropColumn("nombre_establecimiento");
});
}
}
Ahora migramos con php artisan migrate
y nuestra tabla de usuarios debería estar modificada.
Modificar modelo User
La tabla de usuarios de Laravel ya está modificada, ahora falta modificar el modelo. Vamos a modificar sus fillables para que así podamos enviarle los valores desde el formulario.
Abrimos app\User.php
y en fillables
agregamos la propiedad recién agregada a la tabla. En mi caso queda así:
<?php
protected $fillable = [
'name', 'email', 'password', 'nombre_establecimiento',
];
Con eso es suficiente; ahora si usas los controladores resource y los fillables, solo es cuestión de enviar también el campo nombre_establecimiento
al registrar al usuario. Te mostraré un ejemplo.
Enviando valor en formularios
En mi caso utilizo fillables y resources para hacer el desarrollo más rápido. Sé que son cosas distintas, pero en conjunto ahorran bastante código. Ahora bien, solo hay que agregar el campo por ejemplo al registrar:
<div class="form-group">
<label class="label">Nombre establecimiento</label>
<input required autocomplete="off" name="nombre_establecimiento" class="form-control"
type="text" placeholder="Nombre establecimiento">
</div>
Con eso estaría llenándose el modelo y guardándose con el dato recién añadido.
Por cierto, si obtienes todos los usuarios con User::all()
ya puedes acceder e imprimir la propiedad nombre_establecimiento
o como se llame la propiedad que agregaste.
¿Te gusta Laravel? mira más tutoriales en mi blog.