我有两个模型1.患者型号id、name、address1.预约型号:id、patient_id、appointment_date、statusPatient型号有很多Appointments。我想列出患者之前的预约status='closed'。因为我不想为预约状态为open的患者添加新预约我怎样才能做到这一点与雄辩?
id
name
address
patient_id
appointment_date
status
Patient
Appointments
status='closed'
open
ajsxfq5m1#
您可以使用Eloquent查询具有所需条件的患者:
use App\Models\Patient; $patients = Patient::whereHas('appointments', function ($query) { $query->where('status', 'closed'); })->get();
希望这有帮助!
kmbjn2e32#
使用whereNotIn只排除状态为open的id,并返回所有患者:
$Patients = Patient::whereNotIn('id', function($query){ return $query->select('patient_id')->distinct('patient_id')->from('appointments')->where('status', '=', 'open'); })->get();
这个有说服力的查询与sql中的查询相同:
select * from `patients` where `id` not in (select distinct `patient_id` from `appointments` where `status` = 'open')
2条答案
按热度按时间ajsxfq5m1#
您可以使用Eloquent查询具有所需条件的患者:
希望这有帮助!
kmbjn2e32#
使用whereNotIn只排除状态为
open
的id,并返回所有患者:这个有说服力的查询与sql中的查询相同: