Doctrine2检查是否存在相关实体


Doctrine2 Check if related entity exists

如果数据库中存在相关的实体记录,我真的厌倦了如何在Doctrine 2中进行检查。请帮帮我。

例如,我有两个实体。一是某配送公司的订单状态。另一个是秩序。

Order.php

/**
 * @ORM'OneToOne(targetEntity="Application'DeliveryBundle'Entity'DpdOrderStatus", mappedBy="order")
 * @var DpdOrderStatus
 */
$dpdOrderStatus;

DpdOrderStatus.php

/**
 * @ORM'Id
 * @ORM'OneToOne(targetEntity="'Application'FrontendBundle'Entity'Order", inversedBy="dpdOrderStatus")
 * @ORM'JoinColumn(onDelete="CASCADE")
 * @var Order
 */
$order;

订单实体有时没有状态,我需要检查它是否有。

AFAIK如果我将尝试使用is_null($order->getDpdOrderStatus()),它将始终是false,因为如果没有指定EAGER模式,条令总是为其实体创建Proxy对象。

那么,检查数据库中是否存在我的状态实体最合适的方法是什么呢?

添加一个检查订单是否具有订单状态的方法:

Order.php

public function hasOrderStatus(){
 return ! is_null($this->dpdOrderStatus);
}

更多信息:检查Doctrine2 中是否存在关系的技术

这对我有效。

public function hasOrderStatus() {
    return !is_null($this->dpdOrderStatus) && (bool) $this->dpdOrderStatus->getId();
}