如何将此查询转换为CakePHP 3

时间:2016-11-01 10:31:07

标签: cakephp

我的vicidial_logcall_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_date分组。

SQL QUERY

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?

2 个答案:

答案 0 :(得分:2)

来自模特:

 $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();

答案 1 :(得分:1)

  

我使用以下查询解决了我的问题。

IN CONTROLLER:

$query = $this->VicidialLog->find()
        ->select(['call_date' => 'DATE(call_date)'])
        ->where([/*Here is some conditions*/])
        ->group(['call_date'=>'DATE(call_date)']);