2012-08-08 6 views
15

मेरे पास उत्पाद के साथ एक टेबल है और नोट्स के साथ एक और तालिका है। प्रत्येक उत्पाद में कुछ नोट्स हो सकते हैं या नहीं। मुझे केवल यह जानने के लिए नोट्स चाहिए कि उन्हें कौन सा उत्पाद reffered है, लेकिन उत्पाद को इसके नोट्स के बारे में पता नहीं है। मुझे लगता है कि यह मेरा कोड होना चाहिए:@OneToOne के लिए कथन का उपयोग करें - Doctrine2

namespace EM\MyBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

use EM\MyBundle\Entity\Productss; 

/** 
* @ORM\Entity 
* @ORM\Table(name="notes") 
*/ 
class Notess 
{ 
/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @OneToOne(targetEntity="Productss") 
* @JoinColumn(name="products_id", referencedColumnName="id") 
**/ 
private $products; 
//... 
} 

namespace EM\MyBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
* @ORM\Table(name="domains") 
*/ 
class Domains 
{ 
/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 
// ... 
} 

लेकिन यह एक त्रुटि देता है: [सिद्धांत \ Common \ एनोटेशन \ AnnotationException]

[semantical त्रुटि] एनोटेशन "@OneToOne" संपत्ति ईएम में \ MyBundle \ इकाई \ नोट्स :: $ उत्पादों को कभी आयात नहीं किया गया था। क्या आप इस एनोटेशन के लिए " " कथन का उपयोग करना भूल गए हैं?

क्या आप कृपया इसे ठीक करने में मेरी सहायता कर सकते हैं?

उत्तर

51

मुझे लगता है कि आप के बजाय @ORM\OneToOne उपयोग करने के लिए बने थे ...

/** 
* @ORM\OneToOne(targetEntity="Productss") 
* @ORM\JoinColumn(name="products_id", referencedColumnName="id") 
*/ 
private $products; 
//... 
} 
+0

आपको बहुत बहुत धन्यवाद! यह अब काम कर रहा है! :) – Faery

+0

यह समस्याएं उत्पन्न होती हैं जो कि किसी भी प्रकार का रिश्ते है: दस्तावेज के कारण, एक टोमनी, एक टोओ या कई टोमनी। मुझे केवल एक ही समस्या है जो आधिकारिक दस्तावेज़ीकरण की कॉपी/पेस्ट बना रही है: http://docs.doctrine-project.org/en/latest/reference/association-mapping.html –

+2

ऐसा इसलिए होगा क्योंकि सिद्धांत दस्तावेज आपको मानता है प्रत्येक '@' वर्ग का उपयोग 'होगा', इसलिए सभी एनोटेशन वास्तविक वर्ग नाम ('सिद्धांत/ओआरएम/मैपिंग/वनटोन' => 'वनटोन' का उपयोग करें), जहां सिम्फनी ने 'उपयोग सिद्धांत \ ORM \ मैपिंग' की सिफारिश की है एएस ओआरएम नेमस्पेस दृष्टिकोण इसलिए सभी एनोटेशन ओआरएम को बेस ('@ORM \ OneToOne') के रूप में उपयोग करते हैं। – qooplmao