php – Laravel eloquent获取所有记录,其中包含许多关系中的所有ID

我有一个帖子表,它有三个字段id,标题,描述.

我的帖子模型

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();

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...