私はこれを使用して、ドキュメントのアノテーションマッピングをマップしません。しかしそれはそれをキャッチしていません。私はそれが古いコードだと知っていますが、誰かがそれを正しくマップする方法を知っています。ありがとう!奇妙なアクセサでアノテーションを使用していないときに、mongodbハッシュに関連する配列マッピングをロードする適切な方法
そしてまた、これに関連する: 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;
}
PaymentDetailドキュメントの値プロパティのない持続性がないので、私は失敗し2つのテストのエラーが出ますexamplesフォルダの下にあります。ここで
は、問題があるためであるBaseModelの奇妙なセッター/ゲッターのようですPaymentDetails
のマッピングおよびスーパー
のマッピングでありますPaymentDetailsによって拡張されました。上記中間ベースクラスからなり、ここで以下である
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];
}
}
[Payum \ Payum#50](https://github.com/Payum/Payum/pull/50/files)をご覧ください。私はTokenのドキュメントのための回避策を取り戻しましたが、今でも失敗します。それは簡単なsetter \ getterですcuzをデバッグするほうがよいはずです –