【发布时间】:2020-11-16 04:08:24
【问题描述】:
我有一些 Laravel 多态模型,其中包括一个用户模型,它可以有许多预订日历条目,也可以有许多假期条目。 我可以编写以下 SQL 查询来拉回我需要的数据,但在查询的雄辩版本中遇到了困难。也许这是我的模型关系或我对 Laravel 中的工作方式的理解。我有一些雄辩的查询确实有效,但是它们的效率非常低,并且在我调查时使用许多选择,而不仅仅是一个。
我的 SQL:
select hol.*
from booking_calendar bc
join holidays hol
on bc.booked_by_id = hol.id
where bc.model_type='App\Staff'
and bc.model_id=123
and bc.booked_by_type='App\Holiday'
数据库表:
Staff: (App\Staff)
id 123
...
booking_calendar: (App\BookingCalendar)
model_id 123
model_type App\Staff
...
booked_by_id 77
booked_by_type App\Holiday
holidays: (App\Holiday)
id 77
...
我想我的问题的症结在于 booking_calendar 有 2 个多态关系,因为它也用于资产预订。
我想做的是 $staff->holidays() 或 $staff->bookingCalendar->holidays。
如果有人能在一个非原始 SQL + 水合物的雄辩的 select 语句中解释如何做到这一点,我将不胜感激。
【问题讨论】: