Clarifier comment établir une relation un-à-plusieurs dans l'ORM Eloquent de Laravel
D'accord, je suis en train de travailler à travers les Laravel 4 docs pour l'installation d'un un-à-plusieurs relations entre les deux modèles. De toute évidence, d'un côté doit utiliser hasMany(). Mais de l'autre côté, dois-je utiliser hasOne ou belongsTo? Est-il question? Quelle est la différence? Pourquoi faire les deux existent?
J'avais pensé hasOne serait pour un-à-un les relations, et belongsTo serait pour l'un des côtés de l'un-à-plusieurs. Mais dans les docs, pour l'insertion d'un modèle associé ici:
http://laravel.com/docs/eloquent#inserting-related-models
ils sont à l'aide de save()
qui semble être la seule à être présente dans hasOne
et hasMany
des relations, non pas dans belongsTo
. Il ressemble à belongsTo
utilise associate()
pour le même but:
Peut-être que j'ai juste besoin de quelques renseignements généraux sur quand utiliser belongsTo
vs hasOne
et pourquoi belongsTo
utilise associate()
tout hasOne
utilise save()
.
EDIT: je suppose que mon point de confusion est que dans les docs (http://laravel.com/docs/eloquent#inserting-related-models), ils ont utilisé:
$post->comments()->save($comment);
où je l'aurais utilisé:
$comment->post()->associate($post);
Est-il un avantage à l'un ou par l'autre? Ou est-ce juste une question de ce qui fait sens dans le contexte?
source d'informationauteur eimajenthat
Vous devez vous connecter pour publier un commentaire.
Veuillez vous référer à la laravel docs sur le "un à plusieurs" de la relation entre les messages et les commentaires http://laravel.com/docs/eloquent#relationships. (Où un poste a beaucoup de commentaires et un commentaire appartient à un post).
Les tables pour les messages et les commentaires comme suit
Table Posts
id | titre | corps
Commentaires Tableau
id | commentaire | post_id
La table de base de données qui contient une clé étrangère appartient à un enregistrement dans la table, donc, dans les commentaires de modèle, vous devez spécifier que les commentaires appartient à des postes.
Il est exact que les hasOne relation s'applique uniquement à un à un les relations.
Voici un blog avec laravel 3 code qui donne une explication sur la façon éloquente relation méthodes de travail.
http://laravel.io/topic/14/how-eloquent-relationship-methods-work