1

我正在尝试实现 JMSPaymentCoreBundle 但我在下面收到此错误。

[Doctrine\ORM\Mapping\MappingException]                                                                                              
The target-entity CTC\Bundle\OrderBundle\Entity\JMSPaymentCore:PaymentInstruction cannot be found in 'CTC\Bundle\OrderBundle\Entity\Order#paymentInstruction'.

我在文档中遗漏了什么吗?也许与命名空间或 targetEntity 值不匹配,但我不明白。

我还注意到,在我的学说之后:generate:entities,setter 和 getter 看起来很奇怪。

任何想法 ?我感谢你的帮助。

这是我的完整订单实体类:

<?php
namespace CTC\Bundle\OrderBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use JMS\Payment\CoreBundle\Entity\PaymentInstruction;

/**
 * Orders
 *
 * @ORM\Table(name="Orders")
 * @ORM\Entity(repositoryClass="CTC\Bundle\OrderBundle\Repository\OrdersRepository")
 */
class Order
{
    /**
     * @var integer
     *
     * @ORM\Column(name="OrderID", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    
    /** @ORM\OneToOne(targetEntity="JMSPaymentCore:PaymentInstruction") */
    private $paymentInstruction;

    /**
     * @var string
     *
     * @ORM\Column(name="OrderReference", type="string", length=100)
     */
    private $reference;
    
    /**
     *
     * @ORM\ManyToOne(targetEntity="CTC\Bundle\UserBundle\Entity\User", inversedBy="orders")
     * @ORM\JoinColumn(name="UserID", referencedColumnName="id")
     */
    private $user;
    
    /**
     *
     * @ORM\ManyToOne(targetEntity="CTC\Bundle\CreditPackageBundle\Entity\CreditPackage")
     * @ORM\JoinColumn(name="CreditPackageID", referencedColumnName="CreditPackageID")
     */
    private $package;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set reference
     *
     * @param string $reference
     * @return Orders
     */
    public function setReference($reference)
    {
        $this->reference = $reference;

        return $this;
    }

    /**
     * Get reference
     *
     * @return string 
     */
    public function getReference()
    {
        return $this->reference;
    }

    /**
     * Set user
     *
     * @param \CTC\Bundle\UserBundle\Entity\User $user
     * @return Order
     */
    public function setUser(\CTC\Bundle\UserBundle\Entity\User $user = null)
    {
        $this->user = $user;

        return $this;
    }

    /**
     * Get user
     *
     * @return \CTC\Bundle\UserBundle\Entity\User 
     */
    public function getUser()
    {
        return $this->user;
    }

    /**
     * Set package
     *
     * @param \CTC\Bundle\CreditPackageBundle\Entity\CreditPackage $package
     * @return Order
     */
    public function setPackage(\CTC\Bundle\CreditPackageBundle\Entity\CreditPackage $package = null)
    {
        $this->package = $package;

        return $this;
    }

    /**
     * Get package
     *
     * @return \CTC\Bundle\CreditPackageBundle\Entity\CreditPackage 
     */
    public function getPackage()
    {
        return $this->package;
    }

    /**
     * Set paymentInstruction
     *
     * @param \CTC\Bundle\OrderBundle\Entity\JMSPaymentCore:PaymentInstruction $paymentInstruction
     * @return Order
     */
    public function setPaymentInstruction(\CTC\Bundle\OrderBundle\Entity\JMSPaymentCore:PaymentInstruction $paymentInstruction = null)
    {
        $this->paymentInstruction = $paymentInstruction;

        return $this;
    }

    /**
     * Get paymentInstruction
     *
     * @return \CTC\Bundle\OrderBundle\Entity\JMSPaymentCore:PaymentInstruction 
     */
    public function getPaymentInstruction()
    {
        return $this->paymentInstruction;
    }
}
4

1 回答 1

3

您输入了错误的命名空间语法。

@ORM\OneToOne(targetEntity="JMSPaymentCore:PaymentInstruction")

简短的语法 with:在这里是不可接受的。

查看您的其他名称空间声明并使用完整的名称空间对其进行修复。

@ORM\ManyToOne(targetEntity="CTC\Bundle\CreditPackageBundle\Entity\CreditPackage")

像这个。

- 更新 -

我相信,这应该是完整的命名空间JMS\Payment\CoreBundle\Entity\PaymentInstruction

于 2015-04-24T14:09:58.343 回答