Grund Frage:Lehre 2-Mapping Referenzierung eindeutige Schlüssel
Ist es möglich, eine Verbindung mit Lehre Referenzierung keinen primären, sondern nur einen eindeutigen Schlüssels zur Karte?
Extended Version:
Ich habe eine Entität (Participation
), die kann Referenz 2 andere Entitäten (DropoutCause
und DischargeType
). Abhängig von dieser Kombination werden einige andere Attribute basierend auf einer anderen (4.) Tabelle (DropoutScenario
) in der Datenbank impliziert. Da eine der beiden referenzierten Entitäten null sein kann, konnte ich sie nicht als primären, sondern nur eindeutigen Schlüssel in der vierten Tabelle deklarieren.
Das Problem ist, ich nur einen Fehler, wenn ich versuche, dies mit Lehre zur Karte:
Fehlender Wert für Primärschlüssel-ID auf Application \ Entity \ Training \ DropoutScenario
Am I etwas falsch machen, oder ist das mit Doctrine einfach nicht möglich? Wenn nicht, gibt es eine bessere Lösung, wie ich das tun könnte?
Ich habe jetzt eine recht lange Zeit mit der Suche und grub die Dokumentation Lehre, aber ich konnte einfach nichts dazu finden ...
Stripped Codebeispiele meiner Zuordnungen sind unten.
Teilnahme:
<?php
namespace Application\Entity\Trainings;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\MappedSuperclass
*/
abstract class Participation {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Application\Entity\DropoutCause")
* @ORM\JoinColumn(name="dropout_cause_id", referencedColumnName="id"))
*/
protected $dropoutCause;
/**
* @ORM\ManyToOne(targetEntity="Application\Entity\DischargeType")
* @ORM\JoinColumn(name="discharge_id", referencedColumnName="id"))
*/
protected $dischargeType;
/**
* @ORM\ManyToOne(targetEntity="DropoutScenario")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="discharge_id", referencedColumnName="discharge_id"),
* @ORM\JoinColumn(name="dropout_cause_id", referencedColumnName="dropout_cause_id")
* })
*/
private $scenario;
DropoutScenario:
<?php
namespace Application\Entity\Trainings;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="training_dropout_scenarios")
*/
class DropoutScenario {
/**
* @var int
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Application\Entity\DropoutCause")
* @ORM\JoinColumn(name="dropout_cause_id", referencedColumnName="id"))
*/
protected $dropoutCause;
/**
* @ORM\ManyToOne(targetEntity="Application\Entity\DischargeType")
* @ORM\JoinColumn(name="discharge_id", referencedColumnName="id"))
*/
protected $dischargeType;
/** @ORM\Column(type="integer", name="dropout_cause_id") */
protected $dropoutCauseId;
/** @ORM\Column(type="integer", name="discharge_id") */
protected $dischargeTypeId;