0
votes

Comment puis-je passer des données de relation hasone du contrôleur de Laravel à Vue frontend

J'essaie de faire un blog comme une application à l'aide de Laravel et de Vue, mais je suis resté coincé à un moment donné. Lors de l'élaboration du panneau d'administration, je voulais une fonctionnalité "Attribuer un rôle" là où l'administrateur peut affecter un utilisateur avec un rôle particulier comme "admin, modérateur ou auteur". Pour cela, j'ai défini une relation dans le modèle utilisateur xxx pré>

maintenant dans VUE, je souhaite afficher une table avec tous les noms d'utilisateur avec leurs rôles en dehors d'eux. Pour cela, j'ai envoyé une demande au Laravel Server pour extraire toutes les données de la table des utilisateurs, la table des utilisateurs contient les champs ci-dessous P>

ID, nom, nom_fr, e-mail, mot de passe, créé_at, mise à jour_at p> J'ai une relation définie dans le modèle de rôle ASWELL P>

$users = User::all();
return $users;


4 commentaires

J'ai dit ce commentaire ailleurs mais je ne suis pas sûr que vous ne l'avez pas fait: Rôle de fonction publique () {Retour $ Ceci-> Betarotto (rôle :: Classe); } vous avez utilisé le mauvais type de relation


@Tkol, pourquoi devrais-je ne pas utiliser hasone ici? Cela n'a pas plus de sens que l'utilisateur "a un" rôle?


Non, la chose est qu'il y a un à de nombreuses relations BW Rôle et utilisateur. Donc, chaque utilisateur appartient à un rôle particulier et un rôle comporte de nombreux utilisateurs. Hasone est utilisé pour une seule relation.


«Heometo 'vs' Hasone» dépend de laquelle on a une colonne pour l'ID de l'autre. 'Attaxto' Lorsque le modèle vous êtes entré, les utilisateurs contiennent une colonne pour l'ID du modèle que vous consultez, les rôles. 'Hasone' si la table des rôles avait une colonne pour user_id, que vous pouvez voir dans le message d'erreur


3 Réponses :


-1
votes
$users = User::all();
foreach($users as $user) {
    $user->role;
}
return $users;
Believe it or not, that's all you need to do to populate the relationship inside any generated JSON. You just have to call the "magic method"

5 commentaires

Mais vous ne retournez pas le rôle? ça marche comme ça?


Vous retournez l'objet utilisateur, tout comme avant, et maintenant, il sera accessible en tant que user.role - L'objet de rôle complet connecté à l'utilisateur sera à l'intérieur, pour chaque utilisateur, dans votre ordinateur. javascript


J'ai eu exactement ce problème plusieurs fois et je suis absolument certain que cela fonctionne.


Il jette une erreur disant sqlstate [42s22]: colonne non trouvée: 1054 colonne inconnue 'roles.user_id' in 'where' (SQL: SELECT * à partir de rôles rôles . user_id = 1 et rôles . user_id n'est pas une limite null 1) "


Votre relation est fausse. Plutôt que 'Hasone', cela devrait être "appartito". Rôle de fonction publique () {Retour $ Ceci-> Betarotto (rôle :: Classe); }



2
votes

Vous devez modifier votre relation.

Modèle utilisateur p> xxx pré>

Vous pouvez utiliser la relation de rôle et obtenir le nom de là. P>

$user->role->name;


2 commentaires

Sqlstate [42s22]: colonne non trouvée: 1054 colonne inconnue 'roles.user_id' in 'where' (SQL: SELECT * à partir de rôles . user_id dans (1))


Vous devez changer votre relation. J'ai mis à jour la réponse.



2
votes

Je pense que l'une de vos relations est erronée pour commencer, devrait être xxx pré>

pour minimiser les requêtes de base de données, faites ceci: P>

@foreach($users as $user)
    {{ $user->role->name }}
@endforeach


0 commentaires