我已经定义了类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断点,以查看在这种情况下如何使用它。另外,我将尝试添加一个自定义/特定的柴油机,以查看是否解决了错误。(我希望您无论如何都会从长远来看。