Doctrine ..将查询中创建的值映射到实体类的正确方法

时间:2012-10-30 14:42:35

标签: php symfony doctrine

假设我有一个数据库表上传,其中包含 id,user_id,upload,createdDate 以及反映用户表的实体类。

然后我有一个类似的查询。

SELECT u.id, 
  u.name, 
  u.createdDate,
  u.user_id,
  (SELECT COUNT(*) 
   FROM uploads
   WHERE user_id in 
       (SELECT id from uploads
        WHERE user_id = :id) 
    AND createdDate BETWEEN date_sub(NOW(),interval 1 day) 
    AND date_sub(NOW(),interval 0 day)) as countLastDayUploads
FROM uploads as u
WHERE u.user_id = :id

这会返回一个额外的值 countLastDayUploads ,这不会反映在架构中。 这里有两个问题。 应该将countLastDayUploads存储在没有注释的上传实体类中吗?我想是的......

其次,我将如何使用Symfony2 doctrine查询构建器编写此查询。

2 个答案:

答案 0 :(得分:0)

SELECT u.id, 
  u.name, 
  u.createdDate,
  u.user_id,
  count(*) as count
FROM uploads as u
WHERE 
    u.user_id = :id
  AND 
    createdDate > (NOW() - INTERVAL 1 DAY)
GROUP BY u.user_id

如果我理解你 - 这个代码必须工作五个

iduser_iduploadcreatedDate - 错误的名称

iduserIduploadcreatedDate - 更好,但错误

iduser_iduploadcreated_date - 好

这是mysql标准。

答案 1 :(得分:0)

您应该将其添加到实体中,而不显示注释。该学说应该将结果映射到对象。