2 回答
TA贡献1871条经验 获得超8个赞
因此,不建议使用 $_POST['u'] 获取值,您可以将值与路由一起传递,然后将其作为函数的参数进行检索:
/**
* @Route("/addquestion/{u}", methods={"POST","HEAD"})
*/
public function addQuestion($u)
或者你可以从它自己的请求中取出它:
/**
* @Route("/addquestion", methods={"POST","HEAD"})
*/
public function addQuestion(Request $request)
如果您想使用查询构建器,最佳做法是为您的实体创建一个存储库并在那里进行查询:
namespace App\Repository;
use App\Entity\Questions;
use Doctrine\ORM\EntityRepository;
class QuestionsRepository extends EntityRepository
{
public function findUserQuestions($user, $u)
{
$queryBuilder = $this->createQueryBuilder('c')
->where('c.questToID = :questToID')
->andWhere('c.questFrom = :questFrom')
->setParameters(['questToID'=>$u,'questFrom'=>$user]);
return $queryBuilder->getQuery()->getResult();
}
在你的控制器中你可以得到结果:
$userQuestions = $this->getDoctrine()->getRepository(Questions::class)->findUserQuestions($this->getUser(), $u);
count($userQuestions);
我希望这对您的情况有用,并向您解释一下它是如何在 symfony 中完成的
TA贡献1772条经验 获得超8个赞
一种简单的方法是这样的(假设您有一个“问题”实体 - 并且在那里定义的字段与原始查询中的列名匹配)。
$em = $this->getDoctrine()->getManager();
$userQuestions = $em->getRepository(Question:class)->findAll(['questToID' => $_POST['u'], 'questFrom ' => $this->getUser()->getId()]);
$total = count($userQuestion);
或者,如果您更喜欢从查询中获取计数,而不是获取所有匹配的对象并对其进行计数,您可以编写类似这样的查询构建器部分(在这种格式中,这意味着在您的控制器中编写您的原始查询 - 一般来说,“正确”的地方是 QuestionRepository.php 类,它只是在控制器中调用):
$em = $this->getDoctrine()->getManager();
$qb = $em->createQueryBuilder('q');
$qb->select('count(q)');
$qb->andWhere('q.questToID = :questToID');
$qb->andWhere('q.questFrom = :questFrom');
$qb->setParameter('questToID', $_POST['u']);
$qb->setParameter('questFrom ', $this->getUser()->getId());
$total = $qb->getQuery()->getSingleScalarResult();
- 2 回答
- 0 关注
- 193 浏览
添加回答
举报