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);
}
我有这个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);
}