2012-10-30 2 views
1

에 쿼리에서 생성 된 값을 매핑하는 적절한 방법은 내가 데이터베이스 테이블을 ID 266 업로드, 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 쿼리 빌더를 사용하여 어떻게이 쿼리를 작성합니까? 내가 바로 당신을 이해한다면

답변

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 

-이 코드는 일을해야 다섯

id, user_id, upload, createdDate - 잘못된 이름

id

, userId, upload, createdDate - 더 나은 ,하지만 잘못되었습니다.

id, user_id, upload, created_date - 좋은

이 MySQL의 표준입니다.

+0

필자는이 예제를 사용하기 위해 최선의 방법에 대해 질문 할 때 마음을 바꿨다. 현재는 그냥 createQuery()로 앉아 있습니다. 그게 최선의 방법인지 나는 몰랐다. 명명 규칙에 동의했습니다. 따라서 업로드 항목에서 개수 변수를 유지하는 것이 가장 좋습니다. –

+0

아마도/현재 사용자를위한이 db 구조. 하지만 업로드 부울, 그게 잘못 upload_id보다 더 나은 업로드 저장소 ID를 업로드하는 경우. 그리고 시간이 지남에 따라이 테이블은 커다란 크기를 가질 것입니다. 당신은 2 테이블, 먼저 메모리와 두 번째 정상이 필요합니다. Ang은 메모리 테이블에서 1 시간 간격으로 데이터를 집계합니다. – KonstantinKuklin

관련 문제