CodeIgniter
SQL

codeigniter 日付毎に統計時のSQLの発行の仕方

統計画面等を作る際に、日付毎に何人のユーザーが登録したかを調べたい場合。

下記の様なテーブルがあったとする

table名:user
カラム名:created(ユニックスタイムで時間を保存してる)

model
    $this->db->select("FROM_UNIXTIME(created,'%Y-%m-%d') as date,count(*) as count");
        $this->db->group_by("date");
         $query = $this->db->get('user')->result_array();
         return array_column($query,null,"date");

// 
// date      count
// 2017-07-01  3
// 2017-07-02  1
// 2017-07-04  13
// 2017-07-05  5

FROM_UNIXTIME

FROM_UNIXTIME(created,'%Y-%m-%d')ユニックスタイムを第二引数で指定した日付にフォーマとしてくれる。
後は下記の様にしてforeachで回せばOK。

array_columnでkeyに日付を入れ直してるので使いやすい。

contoller
$user_num = $this->Top_model->user_num();
        $data = [
            'user_num' => $user_num,
        ];

        $this->load->view('top/index', $data);

vews
<table class="table">
  <tr>
    <th>日付</th>
    <th>登録人数</th>
  </tr>
  <?php
  foreach ($user_num as $key => $value) {
  ?>
    <tr>
      <td><?= $key ?></td>
      <td><?= $value['count'] ?></td>
    </tr>
<?php } ?>
</table>