繁体   English   中英

Symfony的entityManager的findBy()错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM