【发布时间】:2021-09-23 13:23:53
【问题描述】:
我正在尝试使用 Symfony 4 构建像 airbnb 这样的应用程序。我有用户列出的属性以及这些属性的预订。这些实体之间的关系是 OneToMany。一个属性到多个预订。每个预订都有一个 start_date 和一个 end_date。我想运行一个查询,该查询返回用户选择的某些日期未采用的所有属性。到目前为止,我的查询是这样的:
->andWhere('NOT (reservations.startDate BETWEEN :checkInDate AND :checkOutDate) AND ' .
'NOT (reservations.endDate BETWEEN :checkInDate AND :checkOutDate) AND ' .
'NOT (reservations.startDate <= :checkInDate AND reservations.endDate >= :checkOutDate)')
->setParameter('checkInDate', new \DateTime($checkIn))
->setParameter('checkOutDate', new \DateTime($checkOut))
->innerJoin('p.reservations', 'reservations');
但是,这似乎只检查每个属性的数据库中显示的第一个预订,而忽略其余部分。如何编写代码,以便查询检查为属性所做的所有预订,而不仅仅是数据库中的第一个。非常感谢
【问题讨论】:
-
如果你想获取属性,你需要使用属性存储库,你可以使用groupby属性
-
我正在使用属性仓库。代码会是什么样子?可以举个例子吗?
-
你添加了 ->groupby('p') 语句吗?
-
我也认为是登录 (reservations .end_date > :checkInDate) AND (reservations.start_date