2016-11-08 66 views
2

我的方法是這樣的:如何日期時間字段綁定兩個字符串值之間

public function getCustomDateOrders(string $startDay,string $endDay,string $food) :array 
{ 
    $result = $this->_em->createQueryBuilder() 
     ->select 
     (
      'OrderEntity.name' 
      'OrderEntity.created' 
     ) 
     ->from($this->entityClass , 'OrderEntity') 
     ->leftJoin(
      'Directory\Food', 
      'Food', 
      'with', 
      'Food.id = OrderEntity.FoodId ' 
     ) 
     ->where("Food.id =:food") 
     ->andWhere("OrderEntity.status =:active") 
     ->andWhere("startDate<:OrderEntity.orderCreated >:endDay") 
     ->getQuery() 
     ->setParameters([ 
      "food" =>  $food, 
      "active"  => 1, 
      "startDate"  => $startDay, 
      "endDay"  => $endDay 
     ]) 
     ->getScalerResult(); 

     ->getScalarResult(); 

} 

我有幾個值:

$朝九特派等於"2016-010-17 00:00:00"(串)

$ endDay等於"2016-10-03 00:00:00"(字符串)

而且還有order.createdorder的字段之一)是datetime

我想要從已創建字段的訂單實體獲取訂單,其範圍在$startDay$endDay之間。如何解決它?

回答

2

使用between

public function getCustomDateOrders(string $startDay,string $endDay,string $food) :array 
{ 
    $result = $this->_em->createQueryBuilder() 
     ->select 
     (
      'OrderEntity.name' 
      'OrderEntity.created' 
     ) 
     ->from($this->entityClass , 'OrderEntity') 
     ->leftJoin(
      'Directory\Food', 
      'Food', 
      'with', 
      'Food.id = OrderEntity.FoodId ' 
     ) 
     ->where("Food.id =:food") 
     ->andWhere("OrderEntity.status =:active") 
     ->andWhere("OrderEntity.orderCreated between :startDay and :endDay") 
     ->setParameters([ 
      "food" =>  $food, 
      "active"  => 1, 
      "startDay"  => $startDay, 
      "endDay"  => $endDay 
     ]) 
     ->getQuery() 
     ->getScalerResult(); 
} 
0

這就是爲什麼我們不存儲日期爲字符串。您仍然可以轉換查詢中的字符串,所以不要只關閉計算機。

使用str_to_date()function

讓我們將它翻譯成SQL:

select * from yourtable 
where created > str_to_date(start_day, '%Y-%m-%d %H:%i:%s') 
and created < str_to_date(end_day, '%Y-%m-%d %H:%i:%s') 

我們走吧。給我所有在start_date之後和結束日期之前創建的行。

更好的方法可能會將您的字符串轉換爲日期,並使用之間的像sugested。

相關問題