कहें कि मेरे पास एक प्रस्ताव है, जिसमें 1-एन रेंज हो सकती है। तत्काल आप सोचते हैं, "रेंज के अंदर एक offer_id डालें"।Doctrine2 के साथ समग्र कुंजी इकाइयों पर एसोसिएशन से कैसे निपटें?
लेकिन मेरे प्रस्ताव में एक समग्र प्राथमिक कुंजी है (दो फ़ील्ड से बना है)। कोई ऑटोमेशन कोड कॉलम नहीं है।
Doctrine2 प्रलेखन कि विशेष मामले के बारे में ज्यादा नहीं कहना है, यहाँ मेरी संस्थाओं है:
<?php
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table()
* @ORM\Entity
*/
class Offer
{
/**
* @var Site $site
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Site")
* @ORM\JoinColumn(name="site_id", referencedColumnName="id")
*/
private $site;
/**
* @var string $pouet
* @ORM\Id
* @ORM\Column(name="pouet", type="string", length=255)
*/
private $pouet;
}
<?php
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="RangeItem")
* @ORM\Entity
*/
class Range
{
/**
* @todo This is test code only do not push me :-)
* @var ArrayCollection
* @ORM\ManyToOne(targetEntity="Offer")
*/
private $offers;
}
मैं यह त्रुटि obtaind:
[Doctrine\ORM\ORMException]
Column nameid
referenced for relation from Pouet\MyBundle\Entity\Range towards Pouet\MyBundle\Entity\Offer does not exist.
यही मतलब है, लेकिन मैं कैसे निपट सकते हैं इस मुद्दे के साथ? क्या समग्र प्राथमिक कुंजी वाला एक सारणी इस पर एसोसिएशन करने के लिए मना कर दिया गया है? ,
/**
* @ORM\ManyToOne(targetEntity="Offer")
* @ORM\JoinColumn(name="offer_pouet", referencedColumnName="pouet")
*/
private $offers;
क्योंकि @JoinColumn
के लिए चूक, अगर आप उन्हें निर्दिष्ट नहीं करते, offer_id
और id
होगा:
मेरे पास एक समग्र कुंजी है, मेरी ऑफ़र प्राथमिक कुंजी $ साइट और $ पॉउट का संयोजन है। यही कारण है कि मैं संदर्भित कॉलमनाम का उपयोग नहीं कर सकता, आपके पास एक संयुक्त होने पर पीके के लिए कोई कॉलम नाम नहीं है। – Damien
गोचा, संपादन। लिंक के लिए – Problematic
Thx, लेकिन यह भी काम नहीं करता है। मैं अभी भी यह नहीं समझ सकता कि अन्य ऑब्जेक्ट्स के अंदर मेरे ऑब्जेक्ट ऑफ़र का संदर्भ कैसे दिया जाए। मैं गंभीर रूप से सेक्सी समग्र कुंजी को छोड़ने के बारे में सोच रहा हूं, इसके बजाय एक सरल ऑटो-वृद्धि आईडी (और मेरे क्षेत्रों पर एक अद्वितीय सूचकांक) है। – Damien