实体声明了OneToOne关系
/**
* @var \Backend\SalesBundle\Entity\SalesOrder
*
* @ORM\OneToOne(targetEntity="Backend\CatalogBundle\Entity\CatalogProduct")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="product_id", referencedColumnName="product_id")
* })
*/
private $product;
以下代码适用于这两种情况。如果存在数据库条目,并且它没有
{{ item.product.productId }}
但是当我呼叫需要从数据库加载的字段时,我已经没有找到实体。"例外。由于Doctrine Proxies
,我知道的所有树枝测试都不适合检查{{ item.product.name }}
{{ item.product is null }}
{{ item.product is empty }} etc.
有没有优雅的方法来检查相关实体是否存在?我可以这样做,但对我来说不够好,因为我需要打电话给{{item.product.productId}}
public function getProduct()
{
try {
$sku = $this->product->getSku();
} catch (\Doctrine\ORM\EntityNotFoundException $e) {
return null;
}
return $this->product;
}
答案 0 :(得分:0)
@andreysaf,尝试默认过滤器。
{{ item.product.name|default }}
如果没有产品,它可以防止抛出异常。 实际上它打印传递的字符串(默认字符串是空行)。