Como posso obter tag do post, com Eloqüente ORM
Pergunta
Eu tenho adequada ORM baseado post tags e tabelas.Tags atribuição de postar mais de uma tabela dinâmica.Para obter posts->marcas no laravel que eu uso abaixo de modelo de relação.
//Model: Post
public function tags()
{
$this->belongsToMany('Tag', 'post_tag', 'post_id', 'tag_id');
}
Aqui está o meu banco de dados:
post
id
tags
id
post_tag
post_id
tag_id
Pergunta
Quero recuperar todos os posts que tem uma spesific nome da marca.
O que eu tentei
Post::with(array('tags' => function($query)
{
$query->where('id', '=', 44);
}))->get();
com o carregamento imediato.Mas deu erro de integridade.
Também tentei consulta de relação, jogar um objeto não-erro.
Post::whereHas('tags', function($q)
{
$q->where('id', '=', $tag_id);
})->get();
Solução
A relação é bidirecional
você precisa definir o seu modelo de Tag como
class Tag{
public function posts()
{
return $this->belongsToMany('Post');
}
}
você poderia então fazer
$posts = Tag::find(44)->posts;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow