php artisan make:model Role -m
-m nos crea el archivo de migracion
al que agregaremos algunos campos
Schema::create('roles', function (Blueprint $table) {
$table->increments('id');
$table->string('name')->unique();
$table->string('display_name');
$table->text('description')->nullable();
$table->timestamps();
});
la diferencia entre string y text es la cantidad de caracteres, string solo 255, y text 20mil
php artisan migrate
creamos otra migration para la tabla Users para eliminar el campo role y agregar
uno nuevo llamado role_id (por convencion, singular de la tabla de la tabla a la que
hace referencia seguido del campo clave)
php artisan make:migration add_role_users_table --table=users
Schema::table('users', function (Blueprint $table) {
//
$table->integer('role_id');
$table->dropColumn('role');
});
vamos a crear una funcion para relacionar User con un Role
public function role(){
return $this->belongsTo(Role::class);
}
para luego modificar la condicion en la funcion que verifica los roles
public function hasRoles(array $roles)
{
foreach ($roles as $role) {
if($this->role->name == $role){
return true;
}
}
return false;
}
y en la vista users/index.blade.php
<td>{{$user->role->display_name}}</td>
para definir la relacion de muchos usuarios con un Role
vamos al model Role y agregamos la sgt function
public function user(){
return $this->hasMany('App\User');
}
como prueba podemos crear el sgt end point, para ver los roles con los usuarios correspondientes
Route::get('roles', function(){
return \App\Role::with('user')->get();
// return \App\Role::all();//no te muestra la relacion con usuarios
});
No hay comentarios:
Publicar un comentario