php – 如何生成星期表并按日和小时分组

首先,要明确;有一个这样的例子:

enter image description here

我可以通过这个查询获得课程:

$qb
    ->select("c")
    ->from("ATLReservationBundle:Course","c")
    ->where("WEEK(c.courseDate,1) = WEEK(CURRENT_DATE(),1)")
    ->orderBy("c.courseDate","ASC");

QueryResult中:

{   "courses": [
    {
      "id": 110,"name": "Pilates","quota": 8,"course_date": "2015-08-31T12:15:00+0000","studio": {
        "id": 2,"name": "Stüdyo 2"
      },"trainer": {
        "id": 1,"name": "-"
      }
    },{
      "id": 135,"name": "Spinning","course_date": "2015-08-31T19:30:00+0000",{
      "id": 154,"name": "Kick Box","quota": 6,"course_date": "2015-08-31T20:00:00+0000","studio": {
        "id": 1,"name": "Stüdyo 1"
      },{
      "id": 133,"course_date": "2015-09-01T12:15:00+0000",{
      "id": 113,"name": "Crunch 30 Min.","course_date": "2015-09-01T18:30:00+0000",{
      "id": 112,"course_date": "2015-09-01T19:00:00+0000",{
      "id": 150,"course_date": "2015-09-01T19:30:00+0000",{
      "id": 136,"name": "TRX Group","quota": 5,"course_date": "2015-09-01T20:00:00+0000",{
      "id": 159,"course_date": "2015-09-02T10:00:00+0000",{
      "id": 156,"name": "Stretching","quota": 7,"course_date": "2015-09-02T18:30:00+0000",{
      "id": 127,"name": "Zumba","course_date": "2015-09-02T19:00:00+0000",{
      "id": 148,"course_date": "2015-09-02T20:00:00+0000",{
      "id": 138,"course_date": "2015-09-03T12:15:00+0000",{
      "id": 121,"course_date": "2015-09-03T19:00:00+0000",{
      "id": 117,"name": "TRX","course_date": "2015-09-03T20:00:00+0000",{
      "id": 131,{
      "id": 142,"course_date": "2015-09-04T12:15:00+0000",{
      "id": 147,"name": "LBT 30 min.","course_date": "2015-09-04T19:00:00+0000",{
      "id": 141,"course_date": "2015-09-04T19:30:00+0000",{
      "id": 130,"course_date": "2015-09-05T14:00:00+0000","name": "-"
      }
    }   ] }

但我想将这些数据分组为;

DAY - 31
    HOUR - 12:15 > Coursename
    HOUR - 19:30 > Coursename
DAY - 01
    HOUR - 10:00...

我不知道怎么做,有人吗?

UPDATE

查询

$qb
        ->select("c,HOUR(c.courseDate) as hour,DAY(c.courseDate) as day")
        ->from("ATLReservationBundle:Course","c")
        ->where("WEEK(c.courseDate,1)")
        ->orderBy("c.courseDate","ASC")
        ->groupBy("hour,day");

但;这个查询有问题我不能按小时(c.courseDate),DAY(c.courseDate)分组,因为我收到了这个错误

Error: Cannot group by undefined identification or result variable.

因此,我将时间和日期定义为选择区域中的变量.
我不希望将日和小时视为不同的变量.

QueryResult中:

{
  "courses": [
    {
      "0": {
        "id": 110,"studio": {
          "id": 2,"name": "Stüdyo 2"
        },"trainer": {
          "id": 1,"name": "-"
        }
      },"hour": "12","day": "31"
    },{
      "0": {
        "id": 135,"hour": "19",{
      "0": {
        "id": 154,"studio": {
          "id": 1,"name": "Stüdyo 1"
        },"hour": "20",{
      "0": {
        "id": 133,"day": "1"
    },{
      "0": {
        "id": 113,"hour": "18",{
      "0": {
        "id": 112,{
      "0": {
        "id": 136,{
      "0": {
        "id": 159,"hour": "10","day": "2"
    },{
      "0": {
        "id": 156,{
      "0": {
        "id": 127,{
      "0": {
        "id": 148,{
      "0": {
        "id": 138,"day": "3"
    },{
      "0": {
        "id": 121,{
      "0": {
        "id": 117,{
      "0": {
        "id": 142,"day": "4"
    },{
      "0": {
        "id": 141,{
      "0": {
        "id": 130,"hour": "14","day": "5"
    }
  ]
}

我想我现在很接近.但它一定是这样的;

DAY
    HOUR
    HOUR
DAY
    HOUR
    HOUR

解决方法

获取可视化示例表,请使用:

WEEKDAY(date)

Returns the weekday index for date (0 = Monday,1 = Tuesday,… 6 =
Sunday

select hour(date),-- group by hour
case when weekday(date)=0 then course_name else null end as Monday,-- 1 col for each weekday
.....
case when weekday(date)=6 then course_name else null end as Sunday

from table 
where -- select a monday to sunday calendar week unique by year 
date(date) - interval weekday(date)=date(curdate()) - interval weekday(curdate())
group by hour(date)

要获得您提到的其他变体:

select right(date,2),-- day of month,hour(date) --hour,course_name
from table
group by 1,2

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...