sql - 如何过滤关联对象?
问题描述
我想要一个包含/加入的关联模型的过滤器。
practice.patients.joins('
LEFT JOIN appointments on patients.id = appointments.patient_id
LEFT JOIN patient_treatments on patients.id = patient_treatments.patient_id
LEFT JOIN invoices on patients.id = invoices.patient_id
LEFT JOIN prescription_values on patients.id = prescription_values.patient_id'
).where('(appointments.created_at::date between :start_date and :end_date' ,{start_date: start_date, end_date: end_date })
我想要在此日期范围内预约的患者。
解决方案
您只能使用 加载过滤的关联对象eager_load
。
看看这个例子
result = [YourModel].patients.eager_load(:appointments).where("appointments.created_at::date between :start_date and :end_date" ,{start_date: Date.yesterday, end_date: Date.today })
它将加载在昨天和今天之间创建预约的患者。它还将加载指定日期范围内的相关约会。
尝试做
result.first.appointments
我希望它有帮助!
推荐阅读
- android - 如何在android studio中集成google meet
- python - Tkinter:无论是否选中,复选框值始终为 0
- java - 无法编译 java -jar asp.jar Easter.asp
- android - 重新启动后位置更新需要很长时间,使用 FusedLocationProviderClient
- node.js - 团队通知是否具有自定义权限?
- android - Flutter 错误:错误:无法解析“package:firebase_messaging/firebase_messaging.dart”中的包“firebase_messaging”
- java - 如何测试覆盖ORM“N+1”问题的解决方案?
- mysql - 如何创建将 MySQL 容器数据保存到 docker 映像?
- amazon-web-services - AWS ACM 自定义 CSR
- php - 从小数样式化中排除电子邮件