使用条令插入数据-存储库与实体


Inserting data with Doctrine - Repository Vs Entity

我已经意识到条令存储库和条令实体之间有区别。

我试图在表上实现简单的CRUD操作,并将默认的Doctrine存储库注入到我的控制器中(而不注入实体)。

对于"更新"操作,我将首先更新记录的->find($id),它将返回实体的一个实例,以便我绑定到表单对象。

对于"创建"操作,我意识到我不能->find($id)要插入的记录(因为它不存在),以便检索实体的实例以绑定到我的表单对象。

有没有其他方法可以在没有实体实例的情况下使用条令插入数据?或者有没有一种方法可以从存储库中检索实体的实例,这样我就可以将其->bind()到表单中?如果两者的答案都是否定的,那么我想我唯一的选择就是将实体的实例注入到我的控制器中,或者使用一个自定义存储库,该存储库包含一个方法,该方法将返回一个实体以在->bind()中使用以进行插入。

我的猜测是定义一个自定义存储库,该存储库具有一个检索空实体实例以用于插入的方法。这个假设正确吗?

正如@Crisp在评论中指出的那样,实体只不过是PHP类,与存储库相同。两者因各自的作用而有所区别。

您永远不会隐式地创建存储库的新实例,因为条令可以跨DependencyInjection原则(服务、工厂…)为您创建

要创建新的数据库条目,必须创建相应实体的新实例,然后使用EntityManager::persistEntityManager::flush方法进行存储。

重用实体的同一实例不会给您带来任何好处,也不会对项目的可维护性产生任何影响。

实体类本身永远不会被破坏/更改,只会创建、重命名、移动和删除它们的实例
这些实例表示您的数据库条目,这是使用ORM的主要兴趣所在。