交响乐 4.InheritanceType( "JOINED" ) 和 ParamConverter。奇怪的现象



我已经定义了类Corecase

/**
 * @ORMEntity(repositoryClass="AppRepositoryCoreCaseRepository")
 * @ORMInheritanceType("JOINED")
 * @ORMDiscriminatorColumn(name="type", type="string")
 * @ORMDiscriminatorMap({"Diesel" = "DieselCase", "Carloan" = "CarloanCase"})
 * @ORMHasLifecycleCallbacks()
 * 
 */
abstract class CoreCase 
{
.
.
.
}

和两个类柴油机和carloan:

/**
 * @ORMEntity
 * @ORMHasLifecycleCallbacks()
 */
class DieselCase extends CoreCase
{
.
.
.
}
/**
 * @ORMEntity(repositoryClass="AppRepositoryCarloanCaseRepository")
 * @ORMHasLifecycleCallbacks()
 */
class CarloanCase extends CoreCase
{
.
.
.
}

在操作中,我正在使用param Converter

/**
 * @RestGet("/case/carloan/{case}", requirements={"case" = "d+"})
 *
 */
public function getCarloanCase(CarloanCase $case)
{
.
.
.
}

,如果我用现有的葡萄糖酶打电话给我,例如/case/carloan/201

如果我用柴油机的ID调用URL,我希望有404 error,但我会得到500-Error

" message":"参数1传递给app controller api case carloancontroller :: getCarloancase()必须是app entity cases carloancase,app entity entity cases case dieselcase的实例in/home/alexander/projects/lawbutler/vendor/symfony/http-kernel/httpkernel.php in 150",

但是!如果我从carloan注释中删除 (repositoryClass="AppRepositoryCarloanCaseRepository"),它可以正常工作,并且我得到了预期的404-Error。为什么行为如此奇怪?我该怎么办?

我会在这里猜测,尽管我同意这很奇怪。我注意到您没有柴油箱的自定义存储库来与葡萄糖酶相似。难道是,出于某种奇怪的原因,正在捡起舞会,错误地是为了柴油机查询吗?我认为这将解释500误差的原因,因为您已经交付了错误的实体。可以肯定的是,我在该存储库中放了一些Xdebug断点,以查看在这种情况下如何使用它。另外,我将尝试添加一个自定义/特定的柴油机,以查看是否解决了错误。(我希望您无论如何都会从长远来看。

最新更新