2013-10-08 8 views
9

के साथ एनोटेशन का उपयोग नहीं करते समय मोंगोडब हैश से जुड़े सरणी मैपिंग को लोड करने का उचित तरीका मैं अपने दस्तावेज़ के गैर एनोटेशन मैपिंग को मैप करने के लिए ऐसा कर रहा हूं। लेकिन यह इसे पकड़ नहीं रहा है। मुझे पता है कि यह पुराना कोड है, लेकिन क्या कोई जानता है कि इसे सही तरीके से कैसे मैप करना है। धन्यवाद!अजीब एक्सेसर्स

जुड़े पीआर = https://github.com/Payum/PaypalExpressCheckoutNvp/pull/12/files#diff-fcfa75e424ccb89d62449aba21f9db31R49

और यह भी इस से संबंधित: https://groups.google.com/forum/#!topic/doctrine-user/MdIoOMWA7F4 https://github.com/doctrine/mongodb-odm/issues/421 https://github.com/doctrine/mongodb-odm/issues/453

<?php 

abstract class MongoTest extends BaseMongoTest 
{ 
/** 
* {@inheritDoc} 
*/ 
protected function getMetadataDriverImpl() 
{ 
    $rootDir = realpath(__DIR__.'/../../../../../../../../../'); 
    if (false === $rootDir || false === is_dir($rootDir.'/src/Payum')) { 
     throw new \RuntimeException('Cannot guess Payum root dir.'); 
    } 

$driver = new MappingDriverChain; 
    $xmlDriver = new XmlDriver(
     new SymfonyFileLocator(
      array(
       $rootDir.'/src/Payum/Paypal/ExpressCheckout/Nvp/Bridge/Doctrine/Resources/mapping' 
       => 'Payum\Paypal\ExpressCheckout\Nvp\Bridge\Doctrine\Document', 
       $rootDir.'/examples/Payum/Paypal/ExpressCheckout/Nvp/Examples/Resources/mapping' 
       => 'Payum\Paypal\ExpressCheckout\Nvp\Examples\Document' 
      ), 
      '.mongodb.xml' 
     ), 
     '.mongodb.xml' 
    ); 
    $driver->addDriver($xmlDriver, 'Payum\Paypal\ExpressCheckout\Nvp\Examples\Document'); 
    $driver->addDriver($xmlDriver, 'Payum\Paypal\ExpressCheckout\Nvp\Bridge\Doctrine\Document'); 


    return $driver; 
} 

2 परीक्षण की त्रुटियों में नाकाम रहने के PaymentDetail दस्तावेज़ के मूल्यों गुण का कोई हठ है क्योंकि वहाँ पाने के उदाहरण फ़ोल्डर के तहत।

यहाँ PaymentDetails

https://github.com/cordoval/PaypalExpressCheckoutNvp/blob/mongo-tests/src/Payum/Paypal/ExpressCheckout/Nvp/Bridge/Doctrine/Resources/mapping/PaymentDetails.mongodb.xml?pr=%2FPayum%2FPaypalExpressCheckoutNvp%2Fpull%2F12

की मैपिंग और सुपर क्लास

https://github.com/cordoval/PaypalExpressCheckoutNvp/blob/mongo-tests/examples/Payum/Paypal/ExpressCheckout/Nvp/Examples/Resources/mapping/PaymentDetails.mongodb.xml?pr=%2FPayum%2FPaypalExpressCheckoutNvp%2Fpull%2F12

के लिए मानचित्रण है ऐसा लगता है इस मुद्दे को अजीब सेटर/BaseModel की गेटर है जो की वजह से है भुगतान विवरण द्वारा बढ़ाया गया।

protected $paymentrequest_nnn_amt = array(); 

    public function getPaymentrequestAmt($n = null) 
    { 
     return $this->get('paymentrequest_nnn_amt', $n); 
    } 

    public function setPaymentrequestAmt($n, $value) 
    { 
     $this->set('paymentrequest_nnn_amt', $value, $n); 
    } 

कि इसके बाद के संस्करण यहाँ नीचे एक मध्यवर्ती आधार वर्ग से है, और आधार वर्ग

/** 
* @param string $property 
* @param bool $n 
* @param bool $m 
* 
* @return mixed 
*/ 
protected function get($property, $n = false, $m = false) 
{ 
    $currentValue = $this->$property; 
    if (false !== $n && false !== $m) { 
     if (null === $n && null === $m) { 
      return $currentValue; 
     } 
     if (array_key_exists($n, $currentValue) && array_key_exists($m,$currentValue[$n]){ 
      return $currentValue[$n][$m]; 
     } 
    } 
    if (null === $n) { 
     return $currentValue; 
    } 
    if (array_key_exists($n, $currentValue)) { 
     return $currentValue[$n]; 
    } 
} 
+0

इसे देखें [Payum \ Payum # 50] (https://github.com/Payum/Payum/pull/50/files)। मैंने टोकन दस्तावेज़ के लिए किए गए वर्कअराउंड को वापस कर दिया और अब यह भी विफल रहता है। Cuz को डीबग करना आसान होना चाहिए सरल सेटटर \ getter –

उत्तर

1

मुझे पता चला और समस्या का समाधान होने से है। कई मुद्दे मैं आई है थे:

  • पहले, लंबे समय मैं उलझन में था कि name मोंगो में एक क्षेत्र है और fieldName एक संपत्ति का नाम (issue) है के लिए ORM इस्तेमाल करने के बाद।
  • दूसरा, यदि fieldName किसी भी संपत्ति से मेल नहीं खाता है तो यह केवल silently skipped है (जहां ओआरएम अपवाद फेंकता है)। तो यह पता लगाना मुश्किल था कि संपत्ति क्यों नहीं बचाई गई है। (issue)।

fixing the mapping सब कुछ ठीक काम करता है।

+0

@ कॉर्डोवल अजीब एक्सेसर्स समस्या नहीं है (: –

संबंधित मुद्दे