不相同的条件不起作用Symfony2

时间:2014-12-15 12:58:37

标签: php symfony doctrine-orm entity

我尝试在Repository类中创建自定义查找器。而where条件是找到不是由当前用户创建的内容。但是我仍然会发布所有帖子。这是代码:

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();
}

我做错了什么?

2 个答案:

答案 0 :(得分:1)

如果t.profile是一个实体,您应该像这样比较:

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

答案 1 :(得分:0)

你不应该与Id比较,你以这种方式混合id和entity。我更喜欢比较完整的实体,并委托ORM进行全面比较。

这就是我纠正你的代码的方法,我会改变这一行:

    $params['profile'] = $profile;