Doctrine2 Mapuje elementy za pomocą złożonych kluczy obcych w złożonych kluczach podstawowych

Mam model, który ma wiele tabel, ale w tym przypadku potrzebujemy tylko trzech.

Chodzi o to, że złożony klucz podstawowy jednego jest również kluczem wstępnym (również kompozytowym) i Symfony zgłasza ten wyjątek:

MappingException: Nie można mapować obiektu„Twoje coś z grupy” z złożonym kluczem podstawowym jako częścią klucza podstawowego innej jednostki„Twoje coś w zbiorach” Horeario # empleado ”.

Tutaj wyjaśniam związek:

Salon 1º, ma klucz podstawowyID

2º Empleado, ma złożony klucz podstawowyID, Salon_id a także w kluczu podstawowym kluczem odniesienia do Salon:Salon_id

3º EmpleadoHorario: ma złożony klucz podstawowyFecha, Empleado_id, Salon_id a także w kluczu podstawowym dwa kluczowe klucze odnoszące się do Salonu:Salon_idi Empleado:Empleado_id, Salon_id

Wszystkie stosunki mają również odwrotny związek. Oto kod:

TheSalon Jednostka:

/**
 * Salon
 *
 * @ORM\Table(name="salon")
 * @ORM\Entity
 */
class Salon
{
    /**
     * @var string
     *
     * @ORM\Column(name="id", type="string", length=50, nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    // More fields...

    /**
     * @var array_collection 
     * 
     * @ORM\OneToMany(targetEntity="Empleado", mappedBy="salon")
     */
    private $empleados;

    /**
     * @var array_collection 
     * 
     * @ORM\OneToMany(targetEntity="EmpleadoHorario", mappedBy="salon")
     */
    private $empleadoHorarios;

    // Getters & Setters...
}

TheEmpleado Jednostka:

/**
 * Empleado
 *
 * @ORM\Table(name="empleado")
 * @ORM\Entity
 */
class Empleado
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="bigint", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\JoinColumn(name="salon_id", referencedColumnName="id", nullable=false)
     * @ORM\ManyToOne(targetEntity="Salon", inversedBy="empleados")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $salon;

    // More fields...

    /**
     * @var array_collection 
     * 
     * @ORM\OneToMany(targetEntity="EmpleadoHorario", mappedBy="salon")
     */
    private $empleadoHorarios;

    // Getters & setters...

}

I wreszcieEmpleadoHorario Jednostka:

/**
 * EmpleadoHorario
 *
 * @ORM\Table(name="empleado_horario")
 * @ORM\Entity
 */
class EmpleadoHorario
{
    /**
     * @var \DateTime
     *
     * @ORM\Column(name="fecha", type="date", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $fecha;

    /**
     * @var string
     *
     * @ORM\JoinColumn(name="salon_id", referencedColumnName="id", nullable=false)
     * @ORM\ManyToOne(targetEntity="Salon", inversedBy="empleadoHorarios")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $salon;

    /**
     * @var integer
     *
     * @ORM\ManyToOne(targetEntity="Empleado", inversedBy="empleadoHorarios")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="salon_id", referencedColumnName="salon_id", nullable=false),
     *   @ORM\JoinColumn(name="empleado_id", referencedColumnName="id", nullable=false)
     * })
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="NONE")
     */
    private $empleado;

    // More fields...

    // Getters & Setters...

}

Jak powiedziałem powyżej, problem wydaje się być wEmpleadoHorario.empleado pole, które jest częścią złożonego klucza podstawowego, a także złożonego klucza wstępnego.

Inne odpowiedzi w StackOverflow.com sugerują dziedziczenie mapowania, ale nawet nie wiem, jak to działa. Próbowałem dwa razy poczytając to ale nie mogłem rozwiązać mojego problemu.

questionAnswers(2)

yourAnswerToTheQuestion