我的帖子模型
class Post extends Model
{
use SoftDeletes;
protected $fillable = ['title', 'description'];
public function tags()
{
return $this->belongsToMany(Tag::class, 'post_tag');
}
}
我的标签模型
class Tag extends Model
{
use SoftDeletes;
protected $fillable = ['name'];
public function posts()
{
return $this->belongsToMany(Post::class, 'post_tag');
}
}
现在我想得到帖子&我有标签过滤器的分页符,例如我有两个标签动物& id为1&的新闻2.现在我想获得所有标记为1&的帖子. 2&分页.这是我试过的
Post:: with('tags')->whereHas('tags', function($q) {
$q->whereIn('id', [1, 2]);
})->paginate();
但在这里,因为我在哪里返回帖子有标签1或2或两者.但我想要帖子谁同时标记id 1& 2.
我正在使用Laravel 5.2.
解决方法:
然后,您必须遍历您的ID列表以添加该条件.例如:
$query = Post::with('tags');
foreach ($ids as $id) {
$query->whereHas('tags', function($q) use ($id) {
$q->where('id', $id);
});
}
$query->paginate();