2016-05-02 17 views
0

私はExcelファイルからいくつかのデータを読んで、それをクラスAのオブジェクトに水和しています。今私は、データのフィールドの1つが特定のエンティティのIDに対応することを確認する必要があります。すなわち:'Existing Entity'制約

私は $entityIdは、特定のエンティティの 既存のIDであることを確認する必要があり
class A{ 
    protected $entityId; 
} 

(のはそれFooを呼びましょう)。これは、choiceという制約を使用して、既存のIDのすべてがFooであるため、choicesオプションを指定することで実現できます。しかし、これは明らかにパフォーマンスオーバーヘッドを引き起こします。これを行うための標準的な方法がありますか?

+0

私はあなたの質問を理解していません。 「特定のエンティティのID」とはどういう意味ですか?プロパティ/属性を意味しますか? –

+0

私はDoctrineBridge UniqueEntity制約がうまくいくと思います。あなたのFoosがデータベースに存在すると仮定します。 – Cerad

+0

@cerad 'Foo'は間違いなくデータベースに生きています。しかし、「A」はそうではありません。私はUniqueEntity Constraintをどのように2つの理由で使うことができないのか分かりません。1.それは一意性の存在を強制しません。2.それはルートオブジェクト、すなわちデータベースに存在しない 'A'を検証します。 – user2268997

答えて

0

あなたはExcelパースについて話しているようですが、同時にあなたはフォームに関連していると私は考えていますが、choicesと言います。

IMOでは、IDだけでなくエンティティとの関係を直接処理する必要があります。たいていの場合、idだけでなくクラスAの属性として関連するエンティティを直接持っているほうがずっといいですし、Symfonyはそのような振る舞いをうまく操作します。あなたがフォームを話していたことから、あなたはその後、自動的にデータベース内の要求を実行しますEntityTypeフィールドを使用することができ、これを実行した後

$relatedEntity = $this->relatedEntityRepository->find($entityId); 
if (!$relatedEntity) { 
    throw new \Exception(); 
} 
$entity->setRelatedEntity($relatedEntity); 

は、それからちょうどあなたのExcelのパーサは、このような何かを持っています。結果をフィルタリングする必要がある場合は、query_builderを使用してください。