我需要从Post和Tag表中获得多对多关系的过滤数据。
我有Post Model:
class Post extends Model
{
public function tag()
{
return $this->belongsToMany('App\Tag', 'post_tag','post_id','tag_id');
}
}
标记模型如下:
Class Tag extends Model
{
protected $fillable = ['name'];
public function post()
{
return $this->belongsToMany(Post::class, 'post_tag');
}
}
但是当我尝试获取基于tag_id的过滤数据时:
if($request->filled('tag_id')){
$posts = Post::whereHas(
['tag' => function($query) use($request)
{
$query->where('tag_id','=', $request->input('tag_id'));
}
])->get();
}
它不起作用
答案 0 :(得分:1)
其中将字符串和回调函数作为参数而不是数组:
$posts = Post::whereHas(
'tag' ,function($query) use($request)
{
$query->where('tag_id','=', $request->input('tag_id'));
}
)->get();