小编and*_*saf的帖子

doctrine2检查DB中存在OneToOne相关实体

实体声明了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;
Run Code Online (Sandbox Code Playgroud)

以下代码适用于这两种情况.如果存在数据库条目,如果不存在

{{ item.product.productId }}
Run Code Online (Sandbox Code Playgroud)

但是当我调用需要从数据库加载的字段时,我"找不到实体".例外.由于Doctrine Proxies,我知道的所有树枝测试都不适合检查

{{ item.product.name }}
{{ item.product is null }}
{{ item.product is empty }} etc.
Run Code Online (Sandbox Code Playgroud)

有没有优雅的方法来检查相关实体是否存在?我可以这样做,但这对我来说不够好,因为我需要打电话给{{item.product.productId}}

public function getProduct()
{
    try {
        $sku = $this->product->getSku();
    } catch (\Doctrine\ORM\EntityNotFoundException $e) {
        return null;
    }

    return $this->product;
}
Run Code Online (Sandbox Code Playgroud)

symfony doctrine-orm twig

5
推荐指数
1
解决办法
943
查看次数

标签 统计

doctrine-orm ×1

symfony ×1

twig ×1