我在我的项目中使用CakePHP 3,我觉得需要在报告中格式化ffi.C.puppy_bark("some text")
和date_joined
字段的日期。我可以使用带有日期函数的原生选择查询来格式化该字段的日期,但在CakePHP中,我不确定如何在选择查询中集成日期格式。
date_inactive
更新
我还尝试了CakePHP在线resource
中的一个示例$query = $this->CustomersView->find();
$query->select(['id','contact_person',''date_joined',
'date_inactive','comments','status']);
$query->toArray();
但它在下面引发了我的错误:
$date = $query->func()->date_format([
'date_joined' => 'literal',
'%m-%d-%y' => 'literal'
]);
$query->select(['id','contact_person',''date_joined',
'date_inactive','comments','status']);
$query->toArray();
CakePHP生成的SQL查询:
'Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%m-%d-%y)) AS `datejoined`, CustomersView.date_inactive AS `CustomersView__date_' at line 1'
非常感谢任何帮助。 :)
谢谢,
雷
答案 0 :(得分:1)
如果日期字段在模式中是适当的类型(例如DATETIME
),那么Cake将返回可以使用普通PHP格式化的DateTime对象 - 您不需要在选择中执行此操作
示例:
$query = $this->CustomersView->find();
$query->select(['id','contact_person','date_joined',
'date_inactive','comments','status']);
$array = $query->toArray();
foreach ($array as $row) {
echo $row["date_joined"]->format("dMY");
}
例如,假设您的查询只返回了一行,此处的date_joined
字段设置为2015-12-21 23:55:00
。上面的代码只会打印出21Dec2015
。
答案 1 :(得分:1)
修正了以下代码的问题:
$query = $this->CustomersView->find();
$date = $query->func()->date_format([
'date_joined' => 'literal',
"'%m-%d-%y'" => 'literal'
]);
$query->select(['id', 'contact_person', 'date_joined' => $date,
'date_inactive', 'comments', 'status']);
$query->toArray();
答案 2 :(得分:1)
您可以使用MySQL的DATE_FORMAT($ field,%d-%m-%Y)。
这是一个例子:
$query = $this->CustomersView->find();
$query->select(['id','contact_person',''DATE_FORMAT(date_joined, "%d-%m-%Y")',
'date_inactive','comments','status']);
答案 3 :(得分:0)
对于cakephp> 3.0版本,我们可以使用带有项目数组和别名作为键的选择功能。
$result = $this->Model->find('all')
->where(['column_1 = ' => 'xyz'])
->select(['id','column_1','column_2','formatted_date'=>'DATE_FORMAT(date, "%Y-%m")']);
此处,formatted_date
是DATE_FORMAT
MySQL函数的别名。