'现有实体'约束

时间:2016-05-02 13:57:29

标签: validation symfony

我正在从excel文件中读取一些数据,并将其保存到类A的对象中。现在我必须确保数据的一个字段对应于特定实体的Id。即:

class A{
     protected $entityId;
}

我必须确保$entityId是特定实体的现有ID (我们称之为Foo)。现在,可以使用choice约束来实现此目的,方法是将choices选项作为Foo的所有现有ID提供。但是,这显然会导致性能开销。有没有标准/更好的方法来做到这一点?

1 个答案:

答案 0 :(得分:0)

我对你正在做的事情感到有点困惑,因为你似乎在谈论Excel解析,但同时你提到choices,我认为这与表格有关。

IMO你应该直接处理与你的实体的关系,而不仅仅是它的id。大多数情况下,直接将相关实体作为A类属性而不仅仅是id更好,Symfony可以很好地操纵这些行为。

然后让您的Excel解析器执行以下操作:

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

执行此操作后,由于您正在讨论表单,因此您可以使用EntityType字段,该字段将自动在数据库中执行请求。如果您需要过滤结果,请使用query_builder