Comment toujours ajouter des attributs à Laravel Éloquent modèle?
Je me demandais comment toujours ajouter des données à Éloquent modèle sans avoir besoin de le demander par exemple lors de l'obtention de Postes de forme de base de données, je veux ajouter les infos de l'utilisateur pour chaque utilisateur:
{
id: 1
title: "My Post Title"
body: "Some text"
created_at: "2-28-2016"
user:{
id: 1,
name: "john smith",
email: "[email protected]"
}
}
OriginalL'auteur Mustafa Dwekat | 2016-02-29
Vous devez vous connecter pour publier un commentaire.
Après quelques recherche j'ai trouvé qu'il vous suffit d'ajouter l'attribut vous souhaite la
$appends
tableau dans votre Éloquent Modèle:Puis créer un Accesseur:
De cette façon, il faut toujours l'objet utilisateur pour chaque poste disponible:
User
ferait$model->user
à votre disposition sans avoir besoin d'utiliser ajoute. Aussi, lorsque le modèle est converti en JSON ou de fonte de matrice, lauser
clé si vous avait chargé de cette relation. Si vous souhaitez toujours à l'utilisateur d'ajouterprotected $with = ['user'];
pour le modèle.oui ce droit avec votre façon j'ai toujours utiliser
$model->user
mais ce que j'avais besoin de l'utilisateur de l'objet manuellement sans avoir à la demander en plus je ne veux pas passer par une boucle et je l'utilise dans une API, donc je ne peux pas obtenir ces quand j'affiche une liste d'articles. de cette façon, l'utilisateur de l'objet sera toujours automatiquement.Non, pas lorsque vous ajoutez
protected $with = ['user']
il sera chargé automatiquement pour vous lorsque vous obtenez le modèle. Ajoute est pour lorsque vous souhaitez que les données ne sont pas disponibles dans la base de données sur votre modèle.Oh.. je ne savais pas à ce sujet. Je vais vérifier et de mettre à jour ma réponse. Merci beaucoup.
Il y a un paquet d'ajouter automatiquement des accesseurs pour la réponse github.com/topclaudy/eloquent-auto-append
OriginalL'auteur Mustafa Dwekat