作为登录系统的一部分,我有一个用户实体,我需要在其中添加“上次登录”和“总登录”信息。
我有几个表来表示这个,用户表和user_log表。 user_log表捕获其他日志操作,因此我只需要选择特定类型(LOGIN)。
基本上我需要知道如何用学说实体来表达以下查询:
SELECT username,
MAX(user_log.log_time) AS last_login,
(SELECT COUNT(id) FROM user_log
WHERE user_log.user_id = user.id
AND user_log.log_action = "LOGIN") AS login_count
FROM user
LEFT JOIN user_log ON user_log.log_action = "LOGIN"
AND user_log.user_id = user.id
我尝试过使用DQL,问题是DQL运行了正确的查询,但它不起作用,因为我不知道如何在学说实体中创建这种关系。
我现在能想到的唯一解决方案是在自定义存储库方法中使用上面的查询并手动创建/返回实体。如果可能,虽然我想使用注释建立关系,以便我可以使用内置的存储库方法获取此用户信息。
非常感谢任何帮助,谢谢!