我尝试在存储库类中创建自定义查找器。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();
}
我做错了什么?
如果t.profile
是一个实体,你应该像这样比较:
->where('IDENTITY(t.profile) != :profile');
你不应该与 id 进行比较,你以这种方式混淆了 id 和实体。我更喜欢比较完整的实体,并将完整的比较委托给ORM。
这就是我更正您的代码的方式,我将只更改这一行:
$params['profile'] = $profile;