Laravel muchos a muchas relaciones necesitan ejecutar una consulta para obtener lista de usuarios donde role_id = 5

Tengo las siguientes tablas

  1. usuarios : id Silencioso nombre
  2. proyectos : id Silencioso nombre
  3. user_project : id Silencio usuario_id

Mis modelos contienen

  1. Usuario.php

    proyectos de función pública() {} (Proyecto::clase); }

  2. 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 igual 5.

    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étodo get() 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 objetos User 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