Я слежу за этим:
Вот мой код:
<?php
namespace App\Entity\Type;
use Doctrine\ORM\Mapping AS ORM;
/**
* @ORM\Entity
* @ORM\Table(name = "attr")
*/
class TypeAssociation
{
/**
* @ORM\ManyToOne(
* targetEntity = "App\Entity\Attr",
* inversedBy = "associationValues",
* cascade = {"persist"}
* )
* @ORM\JoinColumn(name = "attr_id", referencedColumnName = "id", nullable=false, onDelete = "CASCADE")
*/
protected $attr;
}
/**
* @ORM\Entity
* @ORM\Table(name = "attr_super")
*
* @ORM\AssociationOverrides({
* @ORM\AssociationOverride(name = "attr",
* joinColumns=@ORM\JoinColumn(
* name = "attr_id2", referencedColumnName = "id", nullable=false
* )
* )
* })
*/
class TypeAssociationBridge extends TypeAssociation
{
}
Он создает вторую таблицу, как и ожидалось, но поля переопределения не создаются - что я делаю неправильно или не понимаю этой функции?
Я использую Doctrine ORM v2.6.2 - Symfony 4.1.6




У вас неправильное сопоставление для вашего класса TypeAssociation, так как он не должен быть Entity. Используйте на нем @ORM\MappedSuperclass вместо @ORM\Entity:
ТипАссоциация
/**
* @ORM\MappedSuperclass
*/
class TypeAssociation
{
/**
* @ORM\ManyToOne(targetEntity = "App\Entity\Attr")
* @ORM\JoinColumn(name = "attr_id", referencedColumnName = "id")
*/
protected $attr;
}
ТипАссоциацияМост
/**
* @ORM\Entity
* @ORM\Table(name = "attr_super")
*
* @ORM\AssociationOverrides({
* @ORM\AssociationOverride(name = "attr",
* joinColumns=@ORM\JoinColumn(
* name = "attr_id2", referencedColumnName = "id"
* )
* )
* })
*/
class TypeAssociationBridge extends TypeAssociation
{
}
Ссылка: