我已经定义了 CoreCase 类
/**
* @ORM\Entity(repositoryClass="App\Repository\CoreCaseRepository")
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="type", type="string")
* @ORM\DiscriminatorMap({"Diesel" = "DieselCase", "Carloan" = "CarloanCase"})
* @ORM\HasLifecycleCallbacks()
*
*/
abstract class CoreCase
{
.
.
.
}
以及两类柴油箱和汽车贷款:
/**
* @ORM\Entity
* @ORM\HasLifecycleCallbacks()
*/
class DieselCase extends CoreCase
{
.
.
.
}
/**
* @ORM\Entity(repositoryClass="App\Repository\CarloanCaseRepository")
* @ORM\HasLifecycleCallbacks()
*/
class CarloanCase extends CoreCase
{
.
.
.
}
在操作中,我使用参数转换器
/**
* @Rest\Get("/case/carloan/{case}", requirements={"case" = "\d+"})
*
*/
public function getCarloanCase(CarloanCase $case)
{
.
.
.
}
如果我使用现有的 CarloanCase 调用 URL,它对我有用,例如 /case/carloan/201
如果我使用 DieselCase id 调用 URL,我预计会出现 404 错误,但收到 500 错误
"message": "传递给 App\Controller\Api\Cases\CarloanController::getCarloanCase() 的参数 1 必须是 App\Entity\Cases\CarloanCase 的实例,给定的 App\Entity\Cases\DieselCase 的实例,在 / 中调用home/alexander/projects/lawbutler/vendor/symfony/http-kernel/HttpKernel.php 第 150 行”,
BUT!如果我删除(repositoryClass="App\Repository\CarloanCaseRepository")
从 Carloan 注释来看,它工作正常,并且我得到了预期的 404 错误。
为什么行为如此奇怪?我能做些什么?