6

関連するエンティティ レコードが DB に存在する場合、Doctrine 2 をチェックインする方法を理解するのに本当に疲れています。お願い助けて。

たとえば、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;

注文エンティティにステータスがない場合があり、ステータスがあるかどうかを確認する必要があります。

私の知る限り、モードが指定されていない場合、Doctrine は常にそのエンティティのオブジェクトを作成するため、それを使用しようとするis_null($order->getDpdOrderStatus())と常にそうなります。falseProxyEAGER

私のステータスエンティティがデータベースに存在するかどうかを確認する最も適切な方法は何ですか?

4

2 に答える 2

1

注文に注文ステータスがあるかどうかを確認するメソッドを追加します。

Order.php

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

詳細: Doctrine2 に関係が存在するかどうかを確認するテクニック

于 2013-08-05T07:37:06.173 に答える
0

これは私にとってはうまくいきました。

public function hasOrderStatus() {
    return !is_null($this->dpdOrderStatus) && (bool) $this->dpdOrderStatus->getId();
}
于 2016-08-19T05:58:54.480 に答える