[英]Symfony entityManager findBy() Error
我试图在视图中仅显示活动广告,但出现错误:
无法猜测如何从参数“ advert”的请求信息中获取Doctrine实例。
当我显示所有广告时,没有问题:
/**
* @Route("/", name="advert_index")
*
* @return Response
*/
public function indexAction()
{
$entityManager = $this->getDoctrine()->getManager();
$adverts = $entityManager->getRepository(Advert::class)->findAll();
return $this->render("Advert/index.html.twig", ["adverts" => $adverts]);
}
但是,当我尝试仅显示活动广告时,我进行了编码:
/**
* @Route("/", name="advert_index")
*
* @param Advert $advert
* @return Response
*/
public function indexAction(Advert $advert)
{
$entityManager = $this->getDoctrine()->getManager();
$adverts = $entityManager->getRepository(Advert::class)->findBy(["status" => $advert->getStatus() === Advert::STATUS_ACTIVE]);
$adverts = $entityManager->getRepository(Advert::class)->findBy([$advert->getStatus() === Advert::STATUS_ACTIVE]);
$adverts = $entityManager->getRepository(Advert::class)->findBy($advert->getStatus() === Advert::STATUS_ACTIVE);
return $this->render("Advert/index.html.twig", ["adverts" => $adverts]);
}
这些是我尝试过的3种方法。 但这行不通。 有人可以帮我吗?
您的问题是操作的方法签名:
public function indexAction(Advert $advert)
Doctrine ParamConverter尝试为您获取广告,但由于路由本身中没有{id}
,因此转换器无法识别要加载的广告。
由于您不希望某个特定的广告删除该参数应该很好:
public function indexAction()
{
...
}
然后,您可以将findBy方法更改为:
findBy(['status' => Advert::STATUS_ACTIVE]);
这应该给您所有活跃的广告。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.