2013-02-23 3 views
-1

У меня есть модель Gameline и контроллер GamelinesController и база данных 'gamelines'. Я хочу, чтобы выполнить этот запросCakephp find count group by in view

enter image description here

что означает, что один рекорд принадлежит 2013-02-18 и есть две записи принадлежат 2013-02-25.

После этого, как подсчитать количество циклов, принадлежащих каждому полю g_time, пожалуйста, помогите мне.

+1

Пожалуйста, поделитесь своими (Cake) PHP код. Поскольку запрос, который у вас есть на скриншоте, - это не запрос, который вы запускаете в своем приложении. Потому что вы используете метод CakePHP (я полагаю). Так можете ли вы вставить свой код, пожалуйста? И ваши результаты? – Jelmer

+0

$ date_count = $ this-> Gameline-> найти ('количество', \t \t \t массив ( \t \t \t \t 'поля' => 'Gameline.g_time', \t \t \t \t 'группа' => ' Дата ('g_time') ', \t \t \t) \t \t); \t \t $ this-> set ('game_counts', $ date_count); –

+0

Пожалуйста, обновите свой OP этим. – Jelmer

ответ

1

Для полей с использованием функций MySQL, таких как DATE(). Вы можете использовать Virtual Fields. В вашем случае, вы бы добавить что-то подобное для вашей модели Gameline:

public function __construct($id = false, $table = null, $ds = null) { 
    parent::__construct($id, $table, $ds); 
    $this->virtualFields = array(
     'date' => 'DATE(' . $this->alias . '.g_time)' 
    ); 
} 

Таким образом, форматированный дата будет доступен в качестве виртуального поля date (используйте другое имя, если у вас уже есть поле, который вызывается так).

Затем в вашей операции find() выберите новое виртуальное поле date. Чтобы вывести эти результаты на ваш взгляд, вы можете просто перебрать свой набор результатов. Допустим, вы храните find() результат в качестве параметра вида называется $data, то вы бы отобразить таблицу как:

<table> 
    <thead> 
    <tr> 
     <th>Date</th> 
     <th>Count</th> 
    </tr> 
    </thead> 
    <tbody> 
    <?php foreach ($data as $row): ?> 
    <tr> 
     <td><?php echo $row['Gameline']['date']; ?></td> 
     <td><?php echo $row['Gameline']['count']; ?></td> 
    </tr> 
    <?php endforeach; ?> 
    </tbody> 
</table>