Доктрина перекрывает полевые ассоциации? - PullRequest
0 голосов
/ 19 октября 2018

Я следую этому:

https://www.doctrine -project.org / projects / doctrine-orm / en / 2.6 / tutorials / override-field-association-mappings-in-subclasses.html# override-field-association-mappings-in-subclasses

Вот мой код:

<?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

1 Ответ

0 голосов
/ 20 октября 2018

У вас неправильное отображение для вашего TypeAssociation класса, так как он не должен быть сущностью.Используйте @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
{

}

Ссылка:

Переопределение ассоциации

...