Я определил класс 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
{
.
.
.
}
и два класса DieselCase и Carloan:
/**
* @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)
{
.
.
.
}
Это работает для меня, если я вызываю URL, с существующим CarloanCase, например / case / carloan / 201
Если я вызываю URL с идентификатором DieselCase, яожидаю ошибку 404, но я получаю сообщение об ошибке 500 *
: «Аргумент 1, передаваемый в App \ Controller \ Api \ Cases \ CarloanController :: getCarloanCase (), должен быть экземпляром App \ Entity\ Cases \ CarloanCase, данный экземпляр приложения \ Entity \ Cases \ DieselCase, вызывается в /home/alexander/projects/lawbutler/vendor/symfony/http-kernel/HttpKernel.php в строке 150 ",
НО! Если я удаляю (repositoryClass="App\Repository\CarloanCaseRepository")
из аннотации Carloan, она работает правильно, и я получаю ожидаемую ошибку 404.Почему поведение так странно?Что я могу сделать?