【发布时间】:2021-07-24 23:43:05
【问题描述】:
我有以下问题要解决。
我想显示除自己的用户回答之外的所有内容。举个例子吧。
第 1 步:用户输入问题的答案
第 2 步:我将答案保存到数据库中
第 3 步:用户现在可以为其他人的问题投票
第 3 步*:在这里我显示所有现有问题,但我不希望显示当前用户的答案。
这是我的查询。 (在 AnswerRepository 中)
$query = $queryBuilder
->where($queryBuilder->expr()->neq('a.user', ':user'))
->andWhere($queryBuilder->expr()->eq('a.diveIndex', ':diveIndex'))
->setParameter('diveIndex', $getDiveIndex)
->setParameter('user', $user)
->getQuery();
return $query->getResult();
遗憾的是,第一个 where 并没有真正起作用,因为当我列出所有答案时,我仍然可以看到当前用户的问题。
回答实体:
/**
* @ORM\ManyToOne(targetEntity=User::class, inversedBy="answerBody", cascade={"persist", "remove"})
*/
private $user;
用户实体:
/**
* @ORM\OneToMany(targetEntity=Answer::class, mappedBy="user", cascade={"persist", "remove"})
*/
private $answerBody;
控制器调用:
$answers = $this->answerRepository->findByIndexAndUser($dto->geIndex(), $this->user);
【问题讨论】:
-
某处是否涉及问题实体?您提到问题和答案,但代码仅显示答案。我有一种感觉,您只过滤/隐藏来自自己用户的答案,而不是问题(如果存在这样的问题) - 在这种情况下,您可能想加入问题表/关系并将用户应用到那个.
-
嘿。不,没有问题实体。
-
能否请您使用与此相关的完整方法和实体类扩展您粘贴的代码?从这里的情况来看,没有什么奇怪的。此外,对于简单的条件,您不需要 expr(),例如
$queryBuilder->expr()->neq('a.user', ':user')和'a.user <> :user'一样好而且在您的控制器中,您似乎使用$this->user而不是通常的$this->getUser()- 您确定传递的用户实际上不是null?
标签: php mysql symfony doctrine-orm