如何限制 whereHas 只匹配 where 条件?
How to restrict whereHas to ONLY match where condition?
我在 Homestead 上使用 Laravel 6.0 和 PostgreSQL。
此查询返回的服务 至少有一个 post 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 查询以获取 只有 post 具有 is_assistant = true
的服务?
可以使用whereDoesntHave
方法:
Service::with('posts')
->whereDoesntHave('posts', function ($q) {
$q->where('is_assistant', false);
})
->get();
我在 Homestead 上使用 Laravel 6.0 和 PostgreSQL。
此查询返回的服务 至少有一个 post 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 查询以获取 只有 post 具有 is_assistant = true
的服务?
可以使用whereDoesntHave
方法:
Service::with('posts')
->whereDoesntHave('posts', function ($q) {
$q->where('is_assistant', false);
})
->get();