1

我想从方法中返回页面实体:getByPath($path)。我只是想知道这个方法应该在脚本中的什么位置。在控制器内部还是在实体类内部?

在我看来,实体“Page”不应该有一个名为“getByPath()”的函数,因为一个实体应该只包含一个实体的数据库信息,可以由 getter 和 setter 获取或设置。而这个“getByPath”函数不仅仅是一个 getter 或 setter,它需要我在实体中运行 entitymanager。我对吗?

那么我应该制作一个PageController并在那里创建“getByPath()”(它将返回页面对象)函数是对的吗?或者有人会在实体类中创建该函数吗?

我想知道实现这一目标的最好方法是什么。

提前致谢。

4

1 回答 1

2

您应该将该函数放在 Page 实体的自定义存储库中

虽然 Entities 是您要存储的对象,但 Repository 是提供访问/加载这些对象的方法的类,例如,当您调用 时$em->getRepository('Entities\Page')->find($page_id);,您调用find()Page 存储库上的方法,它的工作就是为您找到它。

Doctrine 为每个实体提供了一个默认存储库(具有各种find*()方法,...),但您可以提供一个自定义存储库,您可以在其中添加自己的方法,例如getByPath().

Symfony 2 - 数据库和学说 - 自定义存储库类

Doctrine 2 - 自定义存储库

于 2013-10-21T14:10:54.897 回答