No puede devolver un simple valor de relación de muchos a muchos
-
21-12-2019 - |
Pregunta
En primer lugar, gracias por el interés en mi tema. Creo que esta pregunta es fácil.
Tengo una relación creada en Laravel. Mi tabla de usuarios 'representa a los usuarios que pueden iniciar sesión en mi sistema . La tabla My 'Modules' representa los módulos a los que el usuario registrado puede acceder . Entonces, me gustaría verificar si el usuario registrado actual de tiene acceso al módulo solicitado .
Por ejemplo, el usuario intenta acceder a la URL: laravel.com/blog/Insert Pero el usuario no tiene permisos para este módulo, por lo que el sistema verifica las relaciones y devuelve si el usuario puede continuar en esta página o no. Creo que esta validación se puede hacer en el método __Construct de los controladores.
Mis tablas: 'Usuarios', 'Módulos' y 'Users_Modules'
He intentado algo como esto en mi modelo , pero no hay éxito. El $ ID representa el ID del Módulo:
public static function getUser($id)
{
$module = Modules::where('id', '=', $id)->first();
return $module->users;
}
My usuarios modelo modelo:
public function modules()
{
return $this->belongsToMany('Modules', 'users_modules', 'user_id', 'module_id');
}
y mis módulos relación:
public function users()
{
return $this->belongsToMany('User', 'users_modules', 'module_id', 'user_id');
}
¿Cómo puedo hacer eso? ¡Gracias por todos los que me ayudan! :)
Solución 2
Solved the problem using Entrust for Laravel. Thanks all those who helped me!
Link for Entrust:
Otros consejos
La forma de hacerlo es crear un filtro de ruta personalizado en app/filters.php
que comprueba para ver si el usuario es miembro del módulo en cuestión.
Eche un vistazo a los docs aquí en particular la sección en la especificación de parámetros de filtro, quedebe ir a ir en la dirección correcta.