Obtener post dado la etiqueta, relación de tipo muchos a muchos inversas en Laravel

- Andrés Cruz

In english

Obtener post dado la etiqueta, relación de tipo muchos a muchos inversas en Laravel

Muchas veces es necesario obtener los registros de una entidad principal dado la secundaria en una relación de tipo muchos a muchos; la relación típica es que tenemos una relación de tipo muchos a muchos entre los posts y etiquetas o tags y queremos obtener los posts que pertenezcan a ciertas etiquetas; para ello, podemos hacer una consulta como la siguiente:

 Post::whereHas('tags', function($q) {
       $q->where('tag_id', 1);
   
    })->whereHas('tags', function($q) {
       $q->where('tag_id', 4);
   
    })->get();

O si las etiquetas son dinámicas:

$tag_ids=[25,40,30];
    Post::where(function($query)use($tag_ids){
        foreach ($id as $value){
            $query->whereHas('tags',function ($query)use($value){
                $query->where('tag_id',$value);
            });
        }
    })->get();

El modelo de post luce como:

class Post extends Model
{
    public function tags()
    {
        return $this->belongsToMany(Tag::class, 'post_tags', 'post_id', 'tag_id');
    }

}
Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.

!Cursos desde!

10$

En Udemy

Quedan 3d 20:36!


Udemy

!Cursos desde!

4$

En Academia

Ver los cursos

!Libros desde!

1$

Ver los libros
¡Hazte afiliado en Gumroad!