返回"日期"来自Doctrine查询

时间:2015-07-16 20:02:49

标签: symfony

我有这个问题。

 // build query to get their order details
    $orderEntity = $em->createQueryBuilder()
    ->select('oh.orderHeaderId','oh.orderDate', 'oh.orderTotal',       'od.createdDate', 'od.productName', 'od.flashSalePrice', 'od.itemQuantity')
    ->from('FLOEcommerceBundle:OrderHeader','oh')
    ->leftJoin('FLOEcommerceBundle:OrderDetail', 'od' ,'WITH', 'oh.orderHeaderId = od.orderHeaderId')
    ->where('oh.memberId = ?1')
    ->orderby('oh.orderDate' , 'desc')
    ->setParameter(1, $memberId)
    ->getQuery()
    ->getArrayResult();

转储的结果集是。

array:3 [▼
 0 => array:7 [▼
"orderHeaderId" => 25
"orderDate" => DateTime {#3906 ▼
  +"date": "2015-07-15 11:27:59.000000"
  +"timezone_type": 3
  +"timezone": "America/Tegucigalpa"
}
"orderTotal" => "33.9600"
"createdDate" => DateTime {#3904 ▼
  +"date": "2015-07-15 11:28:00.000000"
  +"timezone_type": 3
  +"timezone": "America/Tegucigalpa"
}
"productName" => "Plain Skirt"
"flashSalePrice" => "10.9900"
"itemQuantity" => 1
]

我的问题是a)如何返回日期?和/或b)我如何遍历" orderDate"获得"日期"?的关键我使用foreach遍历数组来构建输出变量。提前谢谢。

  foreach ( $orderEntity as $items ) {



        foreach ( $items as $key => $value ) {

            if( 'orderHeaderId' == $key) {


                $orders .= ' OrderId: ' . $value . $br;

            }
        }


        foreach ( $items as $key => $value ) {

            if( 'orderDate' == $key ) {






                        $orders .= ' OrderDate: ' . $value . $br;

                    }

            }

            }

2 个答案:

答案 0 :(得分:1)

answer应该有所帮助。基本上,您有两个选项,可以修改实体类OrderHeader,也可以在每次遇到日期时间对象时,从变量中提取日期。代码将是这样的。

在您的实体类

/**
 * @return \DateTime
 */
public function getcreatedDate()
{
    $returnValue = $this->createdDate->format('y:m:d') //You can change it to your needed format.
    return $returnValue
}

如果您愿意,您可以随时在控制器中以相同方式修改它。 (如果你不关心除日期之外的其他数据,我个人更喜欢在实体中修改它)

答案 1 :(得分:1)

使用getScalarResult()代替getArrayResult()会将任何DateTime个对象截断为只包含日期的字符串。