Как можно отключить в doctrine наследование? То есть чтобы doctrina не проверяла mapping и работала с этими классами как с обычными классами без extends.
Самое наследование в данной ситуации мне нужно только, чтобы отнаследовать некоторые методы, которые я не хочу, чтобы можно было бы вызывать напрямую из родителя.
UPD:
Я пробовал использовать подход InheritanceType("JOINED"), но он мне выбрасывает ошибку
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
которую я не могу отследить.
Вот пример упрощённых классов.
/**
* Parent
* @ORM\Table(blablabla)
* @ORM\Entity
* @ORM\InheritanceType("JOINED")
* @ORM\DiscriminatorColumn(name="discr", type="string")
* @ORM\DiscriminatorMap({
* "parent" = "App\Model\Parent\Parent",
* "children" = "App\Model\Children\Children"
* })
*/
class Parent
{
/**
* @var Id
*
* @ORM\Column(name="id_parent", type="parent_id", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
protected $id;
//другие поля.
protected function __construct(Id $id, ........)
{
///...... init
}
}
/**
* Children
*
* @ORM\Table(blablabla)
* @ORM\Entity
*/
class Children extends Parent
{
/**
* @var Parent
*
* @ORM\OneToOne(targetEntity="App\Model\Parent\Parent", cascade={"persist", "remove"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_parent", referencedColumnName="id_parent", onDelete="CASCADE")
* })
*/
private $item;
/**
* @var SomeClassForChilder|null
*
* @ORM\OneToOne(targetEntity="App\Model\SomeClassForChilder\SomeClassForChilder",
* mappedBy="children", cascade={"persist"})
*/
private $someClassForChilder;
//другие поля.
public function __construct(Id $id, ........)
{
parent::__construct(Id $id, ....);
$this->someClassForChilder = new SomeClassForChilder($this)
///...... init
}
}
/**
* SomeClassForChilder
*
* @ORM\Table(blablabla)
* @ORM\Entity
*/
class SomeClassForChilder
{
/**
* @var Children
*
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
* @ORM\OneToOne(targetEntity="App\Model\Children\Children",
* inversedBy="someClassForChilder", cascade={"persist", "remove"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="id_parent", referencedColumnName="id_parent", onDelete="CASCADE")
* })
*/
private $children;
public function __construct(Children $children)
{
///...... init
}
}
Далее, сохраняем в базу данных
$children = new Children($id, ....);
persist(children )
flash...
И получаем ошибку
SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
Без наследования ни каких проблем нет.