Doctrine 原则2-如何使用DQL和分组进行搜索
我不知道如何将我喜欢的搜索与按日期分组和DQL中的类别结合起来 说明: 我有一个搜索功能,可以在权重后搜索我的事件。。看起来是这样的:Doctrine 原则2-如何使用DQL和分组进行搜索,doctrine,doctrine-orm,dql,Doctrine,Doctrine Orm,Dql,我不知道如何将我喜欢的搜索与按日期分组和DQL中的类别结合起来 说明: 我有一个搜索功能,可以在权重后搜索我的事件。。看起来是这样的: SELECT e as event, (CASE (e.name LIKE :searchterm) THEN 10 ELSE 0 END) + (CASE WHEN (e.name LIKE :searchtermFull) THEN 5 ELSE 0 END) AS weight F
SELECT e as event,
(CASE
(e.name LIKE :searchterm) THEN 10
ELSE 0
END) +
(CASE
WHEN (e.name LIKE :searchtermFull) THEN 5
ELSE 0
END)
AS weight
FROM
\Entities\Event e
WHERE
e.name LIKE :searchterm OR
e.name LIKE :searchtermFull
ORDER BY weight DESC
这很好,但现在我想按年份和日期(而不是时间)对这些搜索结果进行分组,因此我的项目按如下方式分组:
1月27日:
- 事件1
- 事件2
- 事件3
- 事件4
- 第一类
- 事件1
- 事件2
- 第2类
- 事件3
- 名称varchar(255)
- 说明varchar(255)
- 创建日期时间
- 地点id int(11)
- eventdate日期时间
- 主办方id int(11)
- 已创建用户id int(11)
- 国际组(11)
- id int(11)
- 名称varchar(255)
- 说明varchar(255)
$classLoader->register() 您需要使用日期函数DAY、MONTH或YEAR(Mysql) 条令原样不支持这些函数,因此您需要编写自己的()或安装 按年度、月份分组记录
WHERE ... GROUP BY YEAR(eventdate), MONTH(eventdate) ORDER BY eventdate ASC
按年份、月份和日期对记录进行分组
WHERE ... GROUP BY YEAR(eventdate), MONTH(eventdate), DAY(eventdate) ORDER BY eventdate ASC
您需要使用日期函数DAY、MONTH或YEAR(Mysql) 条令原样不支持这些函数,因此您需要编写自己的()或安装 按年度、月份分组记录
WHERE ... GROUP BY YEAR(eventdate), MONTH(eventdate) ORDER BY eventdate ASC
按年份、月份和日期对记录进行分组
WHERE ... GROUP BY YEAR(eventdate), MONTH(eventdate), DAY(eventdate) ORDER BY eventdate ASC
您不需要编写自己的函数或安装第三方库。由于
datetime
存储为字符串,因此可以使用SUBSTRING()
提取某些部分并按其分组
例如:
您不需要编写自己的函数或安装第三方库。由于
datetime
存储为字符串,因此可以使用SUBSTRING()
提取某些部分并按其分组
例如:
谢谢你的答复。。我已经像你说的那样安装了DoctrineExtensions,但是当我尝试按年份进行分组时,我得到:“错误:无法按未定义的标识或结果变量进行分组。”。。在我上面的帖子中看到我在dql中尝试使用什么样的sql..使用DoctrineExtensions\Query\Mysql在文档顶部您的原始sql对我有效,您能用分组显示您的dql吗?我还建议您使用一个简单的dql,只是为了检查(类似于:选择eventdate GROUP BY YEAR(eventdate))在我的DQL中,我有:SELECT eventdate FROM\Entities\Event e GROUP BY YEAR(e.eventdate),但它仍然显示:错误:无法按未定义的标识或结果变量进行分组。感谢您的回复。。我已经像你说的那样安装了DoctrineExtensions,但是当我尝试按年份进行分组时,我得到:“错误:无法按未定义的标识或结果变量进行分组。”。。在我上面的帖子中看到我在dql中尝试使用什么样的sql..使用DoctrineExtensions\Query\Mysql在文档顶部您的原始sql对我有效,您能用分组显示您的dql吗?我还建议您使用一个简单的dql,只是为了检查(类似于:选择eventdate GROUP BY YEAR(eventdate))在我的DQL中,我有:SELECT eventdate FROM\Entities\Event e GROUP BY YEAR(e.eventdate),但它仍然显示:Error:Cannot GROUP BY undefined identification或result variable。