2016-11-08 68 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。

相关问题