我想要如下逻辑: - >控制器 - >调用Model类(使用实体,管理器扩展模型) - >模型中的函数将调用getRepository()并使用处理数据库的函数。
我该怎么做?当我调用Repository时,我必须有一个实体,如果我有一个空实体,那么错误就是我必须有一个带id的主列。
答案 0 :(得分:0)
正如第一条评论所说,您不应直接从实体类调用存储库。这里有几个选项(按代码质量降序)
定义一个服务,它接受实体,存储库并完成工作
$service = new EntityStuffService($repository);
$service->doTheStuff($entity);
只需在您的课程中声明一个真实内容并手动过滤即可。 Doctrine PersistentCollection
实现了Selectable
,因此您只需使用->matching($criteria)
调用即可对其进行过滤。
Doctrine具有ObjectManagerAware
接口,允许您在水化完成时将对象管理器注入实体。这将允许您实现AR样式和其他意大利面条代码,我强烈建议您不要这样做。
您可以实现此接口并将ObjectManager
存储在实体中,以便对其执行任何操作。