2

此代码返回预定帖子的列表(名称、日期时间)。

$criteria = new CDbCriteria;
$criteria->select='name, datetime';
$criteria->condition='datetime>:datetime';
$criteria->params=array(':datetime'=>date('Y-m-d H:i:s'));
$criteria->order='DATE_FORMAT(datetime, "%d/%m/%Y") ASC';
$models = Posts::model()->findAll($criteria);

我想对具有相同日期 d/m/Y 的帖子进行 GROUP,然后只代表每个帖子的 H/i/s,这可能吗?

像:

Array
(
    [2000/10/10] => Array
    (
        [1] => Array
                (
                    [name] = Post 1
                    [time] = 12:10
                )
        [2] => Array
                (
                    [name] = Post 2
                    [time] = 16:20
                )
        [3] => Array
                (
                    [name] = Post 3
                    [time] = 20:30
                )
    )

    [2000/10/11] => Array
    (
        [6] => Array
                (
                    [name] = Post 6
                    [time] = 10:00
                )
    )
)
4

3 回答 3

1

为了获得时间,您应该选择

 $criteria->select='name, DATE_FORMAT(datetime, "%h:%i") as time';
$criteria->group='date(datetime)';

根据需要获取 o/p 使用 php 逻辑

于 2012-10-19T08:28:28.400 回答
0

我不知道你的结果究竟如何,但你当然可以这样做。尝试这样的事情:

$array[$models["date"]][]["name"] = $models["name"];
$array[$models["date"]][]["time"] = $models["time"];
于 2012-10-19T08:03:25.027 回答
0

有一个简单的扩展可以处理这个问题,它叫做XDateView(免责声明:我是作者),它专门用于显示按日期分组的记录。如果您需要更高级/可配置的东西,您可以使用另一个名为GroupGridView的出色扩展,它具有更多功能,并允许您进行更多自定义和控制。

于 2012-10-19T13:48:29.473 回答