3

多くの関係を持つ Symfony2 プロジェクトがあり、いつでもデータセットの一貫性を維持したいと考えています。たとえば、販売は製品にリンクされています。

ユーザーが製品を削除することを決定したが、製品が販売にリンクされている場合、販売オブジェクトの一貫性を維持するにはどうすればよいですか?

プレーン SQL では、RESTRICT リレーションを使用して「非表示」の列を追加します。商品に関連付けられた販売がない場合、その商品は削除されます。1 つ以上の販売がある場合、製品は削除されませんが、非表示フィールドは true に設定されます。

ユーザー インターフェイスでは、SQL 要求は次のようになります。

     SELECT * FROM product WHERE hidden = FALSE

この問題を処理する正しい方法ですか? Symfony 2 で同様の動作をする方法について何か考えはありますか?

4

1 に答える 1

0

Doctrine の注釈を使用して、常にデータの一貫性を保つことができます。たとえば、販売が削除されると、製品も削除されます。

1 対 1 または 1 対多の関係を使用している場合は、orphanRemovalに true の注釈を付けることができます。

orphanRemoval: どの所有インスタンスにも接続されていない孤立した逆 OneToOne エンティティを Doctrine によって削除する必要があるかどうかを指定するブール値。デフォルトは false です。

詳しくはこちらをご覧ください。

于 2012-12-30T23:45:45.337 に答える