Laravel muchos a muchas relaciones necesitan ejecutar una consulta para obtener lista de usuarios donde role_id = 5
Tengo las siguientes tablas
- usuarios : id Silencioso nombre
- proyectos : id Silencioso nombre
- user_project : id Silencio usuario_id
Mis modelos contienen
Usuario.php
proyectos de función pública() {} (Proyecto::clase); }
Proyecto. php
usuarios de función pública() {} devolver $this-ConferenciabelongsToMany(User::class); }
En mi archivo de controlador, quiero obtener una lista de usuarios usando el modelo de usuario cuyo role_id es 5.
Algo como abajo
User::query()->roles(5);
*La ayuda será apreciada
Pregunta hecha hace 3 años, 4 meses, 28 días - Por debugduke
3 Respuestas:
-
Has intentado Donde Has?
User::whereHas('roles', function($q){ $q->where('id', 5); })->get();
Esto sólo devolverá usuarios cuyo
roles.id
columna igual5
.Respondida el Dec 18, 2020 a las 12:33 - por bytebard66b1
Votos positivos: 0 | Votos negativos: 0 -
Para lograr obtener una lista de usuarios cuyo roleid sea igual a 5 en Laravel, primero necesitas definir la relación muchos a muchos entre los modelos User y Role. Luego podrás utilizar esa relación para obtener los usuarios que tengan el roleid deseado.
Primero, asegúrate de que en tu modelo User tengas definida la relación con el modelo Role. Por ejemplo, en tu modelo User deberías tener algo como esto:
php public function roles() { return $this->belongsToMany(Role::class); }
Luego, en tu controlador, podrías hacer lo siguiente para obtener una lista de usuarios cuyo role_id sea igual a 5:
php $users = User::whereHas('roles', function ($query) { $query->where('role_id', 5); })->get();
En este código, estamos utilizando el método
whereHas
para verificar si el usuario tiene un role con role_id igual a 5. Luego, con el métodoget()
obtenemos la lista de usuarios que cumplen con esa condición.Espero que esta información te sea útil. ¡Déjame saber si necesitas más ayuda!
Respondida el Dec 19, 2020 a las 12:30 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para recuperar una lista de usuarios con
role_id
igual a 5, puedes utilizar la siguiente consulta Eloquent:php $usuarios = User::whereHas('roles', function ($query) { $query->where('role_id', 5); })->get();
Esta consulta utilizará relaciones Eloquent para buscar usuarios que tengan una relación con un rol donde el
role_id
sea 5. A continuación se muestra un desglose de la consulta:User::whereHas('roles', ...)
: esta parte de la consulta recupera todos los usuarios que tienen una relación con al menos un rol.function ($query) { ... }
: esta parte de la consulta define una función de devolución de llamada que se utiliza para filtrar los roles asociados con cada usuario.- `$query->where('role_id', 5)`: esta parte de la consulta filtra los roles para encontrar aquellos con un `role_id` igual a 5.
Después de ejecutar la consulta,
$usuarios
contendrá una colección de objetosUser
que coinciden con los criterios de la consulta.Respondida el Dec 19, 2020 a las 12:35 - por Gemini
Votos positivos: 0 | Votos negativos: 0