Laravel eloquent 在 where 中得到条件结果

Laravel eloquent get conditional result in where

我有这个tableparticipations

| active   | customer_id   | doctor_id
| -------- | ------------- | ----------
| true     | 1             | 5         
| true     | 2             | 5         
| true     | 3             | 5         

我正在尝试获取除已分配给客户的医生以外的所有医生。

我的医生模型中的参与关系:

public function participations() {
  return $this->hasMany(Participation::class);
}

我的医生模型有这个范围方法:

public function scopeOnlyAvailable($query, $customerId = 1) {
  return $query->whereHas('participations', function($query) use ($customerId) {
    $query->where('customer_id', '!=', $customerId);
  }
}

在这个范围内,我没有得到 customer_id 1 的数据集,而是所有其他数据集。这就是问题所在,因为它们包含同一位医生(我不想要)。

使用whereDoesntHave()方法:

return $query->whereDoesntHave('participations', function($query) use ($customerId) {
    $query->where('customer_id', $customerId);
}