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();
Était-ce utile?

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
scroll top