2013-05-22 3 views
1

나는 다음과 같은 SQL 문이 :복잡한 절 추진에 가입 1.6

SELECT * FROM image 
LEFT JOIN history 
ON (image.id = history.image_id 
    AND history.user_id = 1 
WHERE active = 1 
쿼리의 목적은 이미지 테이블의 모든 레코드를 찾을 수 있습니다

(플래그 '활성')와 만 현재 사용자를 참조하는 기록 테이블의 레코드 테이블 사이에 n-to-m 관계가 있고 거기에는 동일한 image_id가 있지만 다른 user_id가있는 레코드가있을 수 있습니다. 나는이 기록이 포함되기를 원하지 않는다. 나는 그것이 추진 1.6을 사용하여 구현하기 위해 노력하고

그래서 코드는 다음과 같이해야한다 생각 :

ImageQuery::create() 
->filterByActive(1) 
->leftJoinHistory('History.Image') 
->addJoinCondition('History.Image', 'History.user_id = ?', 1) 
->find(); 

하지만

실패

절에 매개 변수에 결합 할 수있는 열을 확인할 수 없습니다 'History.user_id =?'

어디에 문제가 있습니까?

답변

0

보십시오 : 당신이 관계 대신 Image.History 것 같다부터 History.Image처럼 뭔가를 가입 시키려고 않는 이유를 모르겠어요

ImageQuery::create() 
->filterByActive(1) 
->leftJoinHistory() 
->addJoinCondition('History', 'History.user_id = ?', 1) 
->find(); 

.

+0

도움이되었습니다. J0k, 고마워! – Pepe