Symfony映射继承了ORM存储类中的属性

时间:2017-05-29 16:55:21

标签: php symfony orm doctrine payum

我扩展了一个定义了一些属性的类。

我必须将继承的属性存储在我的数据库中以映射生成的实体。

这个语法怎么样?

我延长了Payum支付模型类“PaymentDetails”,它本身正在扩展下面所示的“付款”类:

/**
 * Class Payment
 *
 * Lets you create, process and manage payments.
 *
 * @package PayPal\Api
 *
 * @property string id
 * @property string intent
 * @property \PayPal\Api\Payer payer
 * @property \PayPal\Api\Transaction[] transactions
 * @property string state
 * @property string experience_profile_id
 * @property string note_to_payer
 * @property \PayPal\Api\Payee $payee
 * @property \PayPal\Api\RedirectUrls redirect_urls
 * @property string failure_reason
 * @property string create_time
 * @property string update_time
 * @property \PayPal\Api\Links[] links
 */
class Payment extends PayPalResourceModel
{
    // ...
}

“PaymentDetails”类是:

use PayPal\Api\Payment as BasePaymentDetails;

class PaymentDetails extends BasePaymentDetails
{
    protected $idStorage;
}

我自己的班级看起来像这个atm:

/**
 * @ORM\Table
 * @ORM\Entity
 */
class PaymentPaypalPlus extends PaymentDetails
{
    /**
     * @ORM\Column(name="idPpp", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     *
     * @var integer $idPpp;
     */
    protected $id;
}

我不知何故需要使“PaymentPaypalPlus”类作为Payum的有效存储类工作,这意味着我必须将属性从基类映射到DB(使用ORM)。至少那是我认为我应该做的。如果这没有意义,请告诉我: - )

1 个答案:

答案 0 :(得分:0)

它认为您最接近的事情是php-mappingyaml-mapping

如果属性受到保护,你也可以在带有注释的子类中重新定义它们 - 但这会破坏继承的目的,除非有许多函数/ etc可以保持原样。

doctrine inheritance-mapping甚至PHP Traits等实际继承也有效,但您必须修改供应商类。