Dans Laravel pouvez-vous vérifier pour voir si un objet est une Collection en utilisant l'objet de la clé primaire?

J'ai besoin d'un moyen rapide de savoir si un objet est dans une collection. Je suis en train de construire un modèle où un administrateur peut assigner un Utilisateur à un rôle. La déclaration ci-dessous est essentiellement ce que je suis en train d'accomplir.

EST le rôle avec une valeur de clé primaire de 5 dans cette collection de Rôles.

Ce que je suis en train de faire (évidemment abrutir dans un seul fichier):

<?php
//The user
$user = User::find(1);

//Array of roles the user is associated with.  Fetched via a pivot table
$tmpUserRoles = $user->roles->toArray();

//Rebuilds the values from $tmpUserRoles so that the array key is the primary key
$userRoles = array();
foreach ($tmpUserRoles as $roleData) {
    $userRoles[$roleData['role_id']] = $roleData;
}

//This loop is used in the view.  Once again, this is dumbed down
foreach ($Roles as $role) {
    if (isset($userRoles[$role->role_id]) {
        echo $user->firstName.' is a '.$role->label;
    } else {
        echo $user->firstName.' is not a '.$role->label;
    }
}

En boucle sur un tableau juste de créer identique d'un tableau avec la clé primaire comme un indice semble comme une grande perte de temps. Est-il un moyen plus facile dans Laravel pour savoir si un objet est contenu dans une collection en utilisant l'objet de la clé primaire?

$utilisateur->les rôles()->find(5) ajout () après les rôles de la requête de la relation ensemble.

OriginalL'auteur TheNatureBoy | 2014-11-05