Laravel Select where status equals

piztneat  于 2023-05-30  发布在  其他
关注(0)|答案(2)|浏览(130)

我有两个模型
1.患者型号idnameaddress
1.预约型号:idpatient_idappointment_datestatus
Patient型号有很多Appointments
我想列出患者之前的预约status='closed'。因为我不想为预约状态为open的患者添加新预约
我怎样才能做到这一点与雄辩?

ajsxfq5m

ajsxfq5m1#

您可以使用Eloquent查询具有所需条件的患者:

use App\Models\Patient;

$patients = Patient::whereHas('appointments', function ($query) {
    $query->where('status', 'closed');
})->get();

希望这有帮助!

kmbjn2e3

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')

相关问题