2014-12-15 1 views
0

나는 Repository 클래스에서 custom finder를 만들려고한다. 그리고 where 조건은 현재 사용자가 생성하지 않은 것을 찾습니다. 그러나 나는 아직도 모든 포스트를 얻는다. 다음은 코드입니다.같지 않은 조건이 작동하지 않는다 Symfony2

public function selectRelatedTrips($assoc, $profileId) 
{ 

    $params = array(); 
    $query = $this 
     ->getEntityManager() 
     ->createQueryBuilder() 
     ->select('t') 
     ->from('VputiTripBundle:Trip', 't') 
     ->where('t.profile != :profile'); 
    $params['profile']=$profileId; 
    foreach ($assoc as $k => $v) { 
     $query->orWhere('t.startCity = :param' . $k); 
     $query->orWhere('t.targetCity = :param' . $k); 
     $params['param' . $k] = $v; 
    } 

    return $query->setParameters($params) 
     ->setMaxResults(20) 
     ->orderBy('t.id', 'desc') 
     ->getQuery() 
     ->getResult(); 
} 

내가 뭘 잘못하고 있니? t.profile 엔티티 인 경우

+0

것은 당신도 제대로'setParameter' 호출을 (예 :'-> setParameter를 ('프로필', $ theValue) ')? –

+0

@Elias Van Ootegem, 전체 기능을 추가합니다 – nowiko

+0

't.profile'과'$ profileId'의 유형은 동일합니까? – devilcius

답변

1

, 당신은 다음과 같이 비교해야한다 : 당신은 아이디와 비교해서는 안

->where('IDENTITY(t.profile) != :profile'); 
0

, 당신은 ID와 기업이 방법을 혼합하고 있습니다. 전체 엔티티를 비교하고 ORM에 전체 비교를 위임하는 것을 선호합니다.

내가 코드를 수정 얼마나, 난 그냥이 줄을 바꿀 것입니다 :

$params['profile'] = $profile; 
관련 문제