【发布时间】:2020-07-08 12:04:59
【问题描述】:
我有一个自定义存储库返回不适合实体的原始数据。
namespace App\Repository;
class RevenuesRepository
{
/**
* @return array Raw data about revenues
*/
public function getRevenuesRecap()
{
// ...
return $result;
}
}
我想在控制器中使用它,但我不能使用$em->getRepository(...),因为这个存储库没有链接到实体。我该怎么做?
【问题讨论】:
-
存储库可以提供返回原始数据的函数。拥有一个额外的存储库可能仍然会带来一些好处。同样在 symfony 4 和 5 中,您可以使用依赖注入/自动连接来获取存储库,方法是将其添加到控制器的 __construct 或操作方法参数中,恕我直言,方式更清洁,然后使用容器(不赞成)
-
我不想创建一个空实体只是为了让我的存储库正常工作,这可能吗?如果是这样,我该怎么做?
-
我不知道你的熟练程度,因为我回答了你的问题两次。学说 ORM 中的实体管理器显然是处理实体的。添加与实体无关的内容在语义上是错误的。从它请求一个与实体无关的存储库在语义上是错误的。另外,您已经找到了一种使它起作用的方法,我在答案中添加了另一种使它起作用的方法……因此,如果这不是语义上的错误,我真的不明白您要达到的目标。
标签: php symfony repository symfony4 repository-pattern