2014-12-15 3 views
0

Я пытаюсь создать пользовательский поиск в классе репозитория. И где условие находит сообщения, созданные не текущим пользователем. Но я все еще получаю все посты. Вот код:Не равное состояние не работает 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(); 
} 

Что я делаю неправильно?

+0

вы звоните 'setParameter' правильно, тоже (то есть:' -> setParameter ('Профиль', $ theValue) ')? –

+0

@Elias Van Ootegem, я добавляю целую функцию – nowiko

+0

Типы 't.profile' и' $ profileId' одинаковы, не так ли? – devilcius

ответ

1

Если t.profile является юридическое лицо, Вы должны сравнить, как это:

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

Вы не должны сравнивать с Id, вы путаете Ид и Entity таким образом. Я предпочитаю сравнивать полную сущность и делегировать ORM полное сравнение.

Это, как я бы исправить свой код, я бы изменить только эту строку:

$params['profile'] = $profile; 
Смежные вопросы