Pregunta

Tengo las tablas de publicaciones y etiquetas basadas en ORM adecuadas.Etiquetas Asignando para publicar sobre una mesa pivote.Para obtener publicaciones-> Etiquetas en Laravel, utilizo la relación de modelo a continuación.

//Model: Post
public function tags()
{
$this->belongsToMany('Tag', 'post_tag', 'post_id', 'tag_id');
}

Aquí está mi base de datos:

post
  id

tags
  id

post_tag
  post_id
  tag_id

Pregunta

Quiero recuperar todos los mensajes que tienen un nombre de etiqueta espesífica.

Lo que intenté

Post::with(array('tags' => function($query) { $query->where('id', '=', 44); }))->get(); con carga ansiosa.Pero dio un error de integridad.

También intenté una relación de consulta, tirar un error de no objeto.

Post::whereHas('tags', function($q)
{
    $q->where('id', '=', $tag_id);

})->get();

¿Fue útil?

Solución

La relación es bidireccional

Necesitas definir tu etiqueta de modelo Como

class Tag{
    public function posts()
    {
         return $this->belongsToMany('Post');
    }
}

entonces podría hacer

$posts = Tag::find(44)->posts;

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top