बुनियादी सवाल:सिद्धांत 2 मानचित्रण संदर्भित अद्वितीय कुंजी
क्या यह संभव है का उपयोग करते हुए एक संघ मैप करने के लिए सिद्धांत एक प्राथमिक नहीं है, लेकिन केवल एक अद्वितीय कुंजी को संदर्भित?
विस्तारित संस्करण:
मैं एक इकाई (Participation
) है जो मई संदर्भ 2 अन्य संस्थाओं (DropoutCause
और DischargeType
)। इस संयोजन के आधार पर डेटाबेस में किसी अन्य (4 वें) तालिका (DropoutScenario
) के आधार पर कुछ अन्य विशेषताओं को शामिल किया गया है। क्योंकि दोनों संदर्भित इकाइयों में से कोई भी शून्य हो सकता है क्योंकि मैं उन्हें प्राथमिक के रूप में घोषित नहीं कर सकता था लेकिन चौथी तालिका में केवल अद्वितीय कुंजी थी।
समस्या जब मैं सिद्धांत के साथ इस मैप करने के लिए कोशिश मैं सिर्फ एक त्रुटि प्राप्त है:
पर आवेदन \ इकाई \ प्रशिक्षण \ प्राथमिक कुंजी आईडी के लिएअनुपलब्ध मान DropoutScenario
एम आई कुछ गलत कर रहा है, या यह सिद्धांत के साथ बस इतना संभव नहीं है? यदि नहीं, तो क्या कोई बेहतर समाधान है कि मैं यह कैसे कर सकता हूं?
मैं अब काफी समय के लिए खोज कर दिया गया है और सिद्धांत प्रलेखन खोदा, लेकिन मैं तो बस इस पर कुछ भी नहीं मिला ...
मेरी मैपिंग की Stripped कोड नमूने नीचे हैं।
भागीदारी:
<?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;