Comment puis-je obtenir la publication du tag avec Eloquent ORM
Question
J'ai des tables de publication et de balises appropriées basées sur ORM.Balises attribuant à la publication sur un tableau croisé dynamique.Pour obtenir des posts->tags dans Laravel, j'utilise la relation de modèle ci-dessous.
//Model: Post
public function tags()
{
$this->belongsToMany('Tag', 'post_tag', 'post_id', 'tag_id');
}
Voici ma base de données :
post
id
tags
id
post_tag
post_id
tag_id
Question
Je souhaite récupérer tous les messages comportant un nom de balise spécifique.
Ce que j'ai essayé
Post::with(array('tags' => function($query)
{
$query->where('id', '=', 44);
}))->get();
avec un chargement impatient.Mais a donné une erreur d'intégrité.
J'ai également essayé la relation de requête, en lançant une erreur non-objet.
Post::whereHas('tags', function($q)
{
$q->where('id', '=', $tag_id);
})->get();
La solution
La relation est bidirectionnelle
vous devez définir votre étiquette de modèle comme
class Tag{
public function posts()
{
return $this->belongsToMany('Post');
}
}
tu pourrais alors faire
$posts = Tag::find(44)->posts;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow