如何将此查询转换为CakePHP 3
这是我的如何将此查询转换为CakePHP 3,cakephp,Cakephp,这是我的vicdial_log表call_date列的样子 +---------------------+ | call_date | +---------------------+ | 2016-02-06 03:35:48 | | 2016-02-06 03:42:38 | | 2016-02-06 07:38:09 | | 2016-02-06 07:39:11 | | 2016-02-06 07:41:09 | | 2016-02-06 07:42:21 | | 20
vicdial_log
表call_date
列的样子
+---------------------+
| call_date |
+---------------------+
| 2016-02-06 03:35:48 |
| 2016-02-06 03:42:38 |
| 2016-02-06 07:38:09 |
| 2016-02-06 07:39:11 |
| 2016-02-06 07:41:09 |
| 2016-02-06 07:42:21 |
| 2016-01-06 07:44:19 |
| 2016-01-06 07:45:28 |
| 2016-01-06 07:47:08 |
| ................... |
+---------------------+
我想按call\u date
分组,没有时间
SQL查询
SELECT DATE(call_date) AS call_date FROM vicidial_log GROUP BY DATE(call_date);
输出
+---------------------+
| call_date |
+---------------------+
| 2016-02-06 |
| 2016-01-06 |
| ................... |
+---------------------+
如何将此查询转换为CakePHP 3
从模型:
$query = $this->find();
$date = $query->func()->DATE([
'call_date' => 'identifier'
]);
$query->select(['call_date'=>$date])
->group(['call_date'=>$date]); /* or simply ->group($date) */
从控制器:
$query = $this->your_table_name->find();
$date = $query->func()->DATE([
'call_date' => 'identifier'
]);
$query->select(['call_date'=>$date])
->group(['call_date'=>$date]); /* or simply ->group($date) */
关于结果:
$query->toArray();
/* or */
$query->all();
我通过使用下面的查询修复了我的问题
在控制器中:
$query = $this->VicidialLog->find()
->select(['call_date' => 'DATE(call_date)'])
->where([/*Here is some conditions*/])
->group(['call_date'=>'DATE(call_date)']);
到目前为止你试过什么了吗?我解决了我的问题。我将SQL查询转换为CakePHP 3自定义查询生成器。谢谢你的提问@ManoharKhadkaMay在我发布答案之前,您是否找到了答案……但您仍然可以看到并处理这个问题,或者可能对其他人有所帮助。是的!我已经修好了。但是你的问题也可以,我同意你的回答@ManoharKhadkaTo总结:应该将其放入模型层,然后从控制器层调用:
$this->vicidialls->findCallDatesGroupedByCallDate($date)->all()
等。不应该终止模型查询以允许重用。