【发布时间】:2019-10-19 09:49:58
【问题描述】:
我有一个包含四个基本表的数据库:Classroom、Department、Subject 和 Day。教室仅在某些日子可用,并且一天可以有多个教室可用。因此,这是与作为数据透视表的 AvailableHour 表(和模型)的多对多关系。此表有两个额外字段:可用(true/false)和容量(因为一天的容量可能与基本容量不同)。 使事情复杂化的是第二个多对多关系。如果教室在一天内有空,则可能只允许某些部门使用所有科目,仅针对一门科目或排除一门科目。这是第二个多对多关系。一个部门可以是许多 availableHours 的一部分,并且一个 availableHour 可以有许多部门。 请参阅包含的图片。
我如何在 laravel 中定义这种关系,以便我可以查询指定日期允许部门的哪些教室可用?
有点像
Classroom::with(['AvailableHours'=>where(day_id=requested_day and availabel=true),'AvailableHours.AllowDepartments'where(department_id=requested_department)])->get()
(为了便于阅读,闭包被缩短了)。
我从一对多的关系开始,但这并没有达到预期的结果。当我要求AvailableHours.AllowedDepartments 时,将它们转换为多对多关系和数据透视表和模型会导致错误。
Call to undefined relationship [AllowdDepartments] on model [App\Day].
如果我只使用 {Classroom::with('AvailableHours')} 会返回一个教室集合。属性 'relations' 有一个数组 [1] 的 AvailableHours 值,其单个元素是 'Day' 的集合。
【问题讨论】:
-
查询
AvailableHours.AllowedDepartments时遇到什么错误? -
我更新了问题以包含错误和其他一些信息
标签: laravel