Laravel éloquent - Un à plusieurs relations
Je viens de commencé avec laravel v3 et je suis d'essayer d'envelopper ma tête autour de la éloquent de l'Un-À-Plusieurs relations par la création d'un blog, j'ai des postes qui ont un nombre à une relation avec des catégories (Chaque Poste est lié à une catégorie).
J'ai les tableaux suivants avec les champs suivants:
postes: id, titre, corps, date_created, category_id
catégories: id, nom
J'ai le texte suivant deux modèles:
class Category extends Eloquent
{
public function posts()
{
return $this->has_many('Post');
}
}
class Post extends Eloquent
{
public function categories()
{
return $this->belongs_to('Category');
}
}
J'ai compris comment faire pour tous les postes, en passant par un id de catégorie:
category::find(2)->posts()->get())
J'ai juste besoin d'aide pour trouver comment obtenir tous les postes, et d'obtenir leurs corrisponding catégories. Ainsi, à la fin de la journée, dans la vue que je peut sortir quelque chose comme ceci:
{$post->title} - Category: {$post->category->name}
Merci pour toute aide!
OriginalL'auteur Allister | 2012-10-17
Vous devez vous connecter pour publier un commentaire.
J'espère que vous trouverez ces conseils utiles.
Sur le modèle post renommer le
categories
fonction decategory
. Unbelongs_to
relation est au singulier, donc, ce post a une et une seule catégorie.Relations ont également un court de main, cette abréviation syntaxe est utile, car il est plus propre d'utiliser et les résultats sont mis en cache. Heres un exemple:
Maintenant un exemple de la façon d'obtenir tous les postes avec leurs catégories connexes:
Maintenant, une chose que vous remarquerez rapidement lors de ce deuxième exemple est le nombre de requêtes augmente pour chaque poste que vous avez. Ceci est appelé le N+1 effet. Exemple, si vous avez 5 postes, une requête sera exécutée pour obtenir ces postes. Ensuite, dans la boucle de l'exécution d'une requête pour obtenir la catégorie. Cela se traduit dans 6 total des requêtes.
Pour résoudre ce problème, utilisez avide de chargement, ce qui réduit les 6 requêtes dans notre exemple, de 2.
J'espère que ça aide!
Espérons que cela soit de même avec Laravel 4 trop. J'ai un petit doute. Je suis nouveau à cela. Pouvez-vous dire si cette désireux de chargement doit être tapé dans contrôleur / vue?
Typicly que ce serait fait dans un contrôleur ou une classe wrapper connu comme un référentiel qui est utilisé par le contrôleur. Vous ne devriez jamais faire dans la vue. En plus de tout cela est resté le même dans L4 aussi loin que je peux dire.
OriginalL'auteur William Cahill-Manley
Laravel 4 a une syntaxe légèrement différente , il utilise camelCase pour générer des expressions (tout en L3 utilise snake_Case syntaxe).Laravel (L4) nouvelle syntaxe est maintenant PSR-1 conforme .
De prouver que "désireux de chargement" booste les performances de votre application (en minimisant les requêtes de base de données) , l'utilisation Laravel de l'événement éco-système .
.
OriginalL'auteur JohnD