Php 在不从存储库加载的情况下设置实体子实体

Php 在不从存储库加载的情况下设置实体子实体,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我有一个条令实体,它有类别,所以要为我需要调用的实体设置一个类别 $category = $categoryRepository->find($categoryId); $entity->addCategory($category); 是否可以在没有仅具有ID的存储库的情况下进行设置 是的,您可以使用引用代理: $entity->addCategory($em->getReference('MyProject\Model\Category', $categoryId))

我有一个条令实体,它有类别,所以要为我需要调用的实体设置一个类别

$category = $categoryRepository->find($categoryId);
$entity->addCategory($category);

是否可以在没有仅具有ID的存储库的情况下进行设置

是的,您可以使用引用代理:

$entity->addCategory($em->getReference('MyProject\Model\Category', $categoryId))

谢谢您的回答。所以entitymanager是必需的,我不能直接在我的实体中执行,因为他们不存在entitymanager。为了更清楚地说明这一点,我的想法是在实体中创建一个setData函数,它基本上是来自JSON api的数组。在我的例子中,我还有一些其他端点,它们具有与我认为的相同的逻辑,可以将整个集合移动到实体中,以便在加载实体的位置轻松使用id。@AlexanderSchranz实体不应该知道实体管理器,因为它违反了SRP原则,实体应该是具有数据库映射的数据的唯一容器。只需编写symfony服务,将数据从JSON转换为实体。它还可以处理数据验证和格式化。