以下是我的实体:
Reserves
id<br>
user<br>
treat_type<br>
from_date<br>
number<br>
price<br>
hour (manyToOne with ReserveTime -> time)<br>
ReserveTime<br>
id<br>
time<br>
my query: <br>
$em = $this->getEntityManager();<br>
$stmt = $em->getConnection()->prepare("SELECT rt.time<br>
from reserves r, reserve_time rt<br>
where r.hour = rt.id and r.from_date = :date_reserve
and<br> r.number < 2");<br><br>
$stmt->execute(array("date_reserve" => $reserve_date));<br>
return $stmt->fetchAll();<br>
我希望当用户选择一个日期来获取当天的所有可用时间时,但是它只给出了当天保留时间的结果。我希望所有时间不仅仅是那个储备中的小时。 我希望你能帮助我。
答案 0 :(得分:0)
您应该选择给定日期的所有实体。如果$ reserve_date是DateTime对象,则:
$startDate = clone $reserve_date;
$startDate->setTime(0,0,0);
$endDate = clone $startDate;
$endDate->modify('+1 day');
$em = $this->getEntityManager();
$stmt = $em->getConnection()->prepare("SELECT rt.time from reserves r, reserve_time rt where r.hour = rt.id and r.from_date > :from_date and r.from_date < :to_date and r.number < 2");
$stmt->execute(array("from_date" => $startDate, "to_date" => $endDate));
return $stmt->fetchAll();
之后你必须遍历结果并找到空闲的时间窗口。