¿Cómo puedo obtener la publicación de la etiqueta con elocent orm?
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();
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