我正在尝试连接两个表并在twig模板中打印一个值,但我遇到了这个问题。
这是我的控制器操作。
/**
* @Route("products/display/{id}")
* @Template()
*/
public function displayAction($id) {
$em = $this->container->get('doctrine.orm.entity_manager');
$qb = $em->createQueryBuilder();
$qb->select('p', 'pc.catTitle')
->from('EagleShopBundle:Products', 'p')
->leftJoin('EagleShopBundle:ProductCategory', 'pc', \Doctrine\ORM\Query\Expr\Join::WITH, 'pc.id = p.category')
->where($qb->expr()->eq('p.id', '?5'))
->setParameter(5, $id);
$product = $qb->getQuery()->getResult();
return $this->render("EagleShopBundle:global:product.html.twig", array(
'product' => $product,
'image_path' => '/bundles/eagleshop/images/'
));
}
这是与问题相关的我的twig文件行,
<small class="pr_type">{{product.catTitle}}</small>
但是我没有打印'catTitle',而是遇到了这个问题,
键中包含“0”的数组的“catTitle”不存在 EagleShopBundle:全球:product.html.twig
答案 0 :(得分:2)
很简单:getResult()
返回一个对象数组,即使只有一个。如果您希望此查询只返回一个对象,请使用getOneOrNullResult()
。但在此之后,在显示结果之前,您需要检查是否返回了smth(例如:product instanceof Products
)或返回null。