我正在使用cakephp v3。
我有一个简单的模型函数;
public function getXXXoutput($xxx_term, $start_date, $end_date)
{
$monthly_XXX_curves = TableRegistry::get('MonthlyXXXCurves');
$query = $monthly_XXX_curves
->find()
->select( ['date_transacted', 'output'] )
->toArray();
return $query;
}
控制器功能如下所示;
public function apiGetXXX()
{
$json_output = $this->MonthlyXXXCurves->getXXXoutput($xxx_term, $start_date, $end_date);
echo json_encode($json_output);
}
控制器返回的json格式如下所示;
[
{
output: 1.37,
date_transacted: "2015-01-01T00:00:00+0000"
},
{
output: 1.62,
date_transacted: "2015-02-01T00:00:00+0000"
}
]
我想从date_transacted
删除时间信息,以便最终的json结构看起来像这样;
[
{
output: 1.37,
date_transacted: "2015-01-01"
},
{
output: 1.62,
date_transacted: "2015-02-01"
}
]
如何修改控制器功能以实现所需的json结构?
答案 0 :(得分:1)
选择date_transacted并在查询中将其格式化为DATE
public function getXXXoutput($xxx_term, $start_date, $end_date)
{
$monthly_XXX_curves = TableRegistry::get('MonthlyXXXCurves');
$query = $monthly_XXX_curves
->find()
->select(['transacted' => 'DATE(date_transacted)', 'output'])
->toArray();
return $query;
}
答案 1 :(得分:1)
我不熟悉CakePHP,因此不知道这是如何处理的。我所知道的是$json_output
是一个数组,因此可以循环和修改。
foreach ($json_output as $key => $value) {
$date = new DateTime($json_output[$key]['date_transacted']);
$json_output[$key]['date_transacted'] = $date->format('Y-m-d');
}
在上面添加以上内容:
echo json_encode($json_output);
答案 2 :(得分:1)
当您使用ORM
获取记录时,它将date and time fields
作为Cake\I18n\Time
对象从Carbon
延伸,而Carbon
从DateTime
延伸}。您只需拨打i18nFormat
或format
方法。
引擎盖下,CakePHP使用Carbon为其Time实用程序供电。你可以用Carbon和DateTime做任何事情,你可以用Time做。 有关Carbon的详细信息,请参阅their documentation。
$date_transacted->format('Y-m-d');