繁体   English   中英

如何限制 whereHas 只匹配 where 条件?

[英]How to restrict whereHas to ONLY match where condition?

我在 Homestead 上使用 Laravel 6.0 和 PostgreSQL。

此查询返回的服务至少有is_assistant = true的帖子:

Service::with('posts')
    ->whereHas('posts', function ($q) {
        $q->where('is_assistant', true);
    })
    ->get();

楷模:

class Service extends Model
{
    public function posts()
    {
        return $this->belongsToMany('App\Post');
    }
}

class Post extends Model
{

    protected $casts = [
        'is_assistant' => 'boolean',
    ];

}

如何编写一个 Eloquent 查询来获取只有is_assistant = true帖子的服务?

可以使用whereDoesntHave方法:

Service::with('posts')
    ->whereDoesntHave('posts', function ($q) {
        $q->where('is_assistant', false);
    })
    ->get();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM