如何将此查询转换为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()
等。不应该终止模型查询以允许重用。