2017-05-05 17 views
0

は私の実体である:SQLクエリの埋蔵量はsymfonyここ

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

質問する際にコードを書式設定してください。これは厄介に見え、多くの場合答えを得る可能性は低いです。 – David

答えて

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(); 

その後、結果をループして空き時間ウィンドウを見つける必要があります。

関連する問題