我有这个问题。
// 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;
}
}
}
答案 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
个对象截断为只包含日期的字符串。