将存储过程结果用作原则实体字段

时间:2018-12-18 22:15:35

标签: symfony doctrine

我想用存储过程的结果填充Entity中的一个字段。我正在使用最新的Symfony和Doctrine(分别为4.1和2.6)。该数据库是第三方,我无法更改其架构。我也将其内容视为只读。

我有一个大约有50个字段/关系的实体,所有实体都使用@Column和@ManyToOne注释填充;这些都按预期工作。使用存储过程填充的最后一个字段使用自定义字段的名称,表名称和行主键(ID)从另一个表中提取“自定义字段”。在SQL中:

dbo.GetCustomField('FieldName', 'TableName', TableName.Id)

因此,如果本机使用SQL,则可以通过执行以下操作来提取此自定义字段以及所有“普通”字段:

SELECT
    *, 
    dbo.GetCustomField('FieldName', 'TableName', TableName.Id) AS FieldName
FROM
    TableName
[INNER JOIN ..., WHERE ..., etc.]

我当然可以轻松地创建一个存储库函数,以使用单个本机SQL来为单个实体或具有特定自定义查询的一组结果提取此函数。

我希望能够将此字段视为只是表的一部分。在我的脑海中,我想像过要使用一些批注将一些本机SQL插入到select查询中,而与以后的WHERE等子句无关。但是,似乎不存在。

我查看了Doctrine Native SQL documentation并查看了ResultSetMappings,但它似乎只允许特定的查询/结果集-即使那样,我也找不到为存储过程插入必要的id参数的方法。同样,我使用PostLoad生命周期事件对EventListeners / Subscriber进行了实验,但是由于我可以找到一种使存储库或自定义SQL正常工作的方式,因此无法以这种方式填充字段。

我想念什么吗?有可行的方法吗?任何输入表示赞赏!

0 个答案:

没有答案