gpt4 book ai didi

Symfony2 MappedSuperClass 和 Doctrine :generate:entities

转载 作者:行者123 更新时间:2023-12-04 17:00:07 27 4
gpt4 key购买 nike

我有一个“Offer”类(MapperSuperclass)和另外两个扩展它的类,“PrivateOffer”和“PublicOffer”。

我遇到的问题是,当我运行“doctrine:generate:entities”命令时,“PrivateOffer”和“PublicOffer”两个类都充满了与 MappedSuperclass“Offer”类相同的属性,而且它也是 getter 和 setter 方法。

如果我删除它们并只在“Offer”类中使用它们,“doctrine:schema:update”会按预期工作,但我需要再次运行“doctrine:generate:entities”,所以每次我的扩展类都会破坏.

为什么“doctrine:generate:entities”会复制两个类中的所有属性和 setter/getter 方法,如果它们扩展了 MappedSupperclass?

谢谢你们 :)

优惠等级:

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
/**
* Offer
*
* @ORM\MappedSuperclass()
*/
class Offer
{
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255)
*/
protected $name;

....more properties...
}

私有(private)优惠类:
<?php

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* PrivateOffer
*
* @ORM\Table(name="private_offer")
* @ORM\Entity
*/
class PrivateOffer extends Offer
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;


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

公共(public)优惠类:
<?php

namespace Pro\JobBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* PublicOffer
*
* @ORM\Table(name="public_offer")
* @ORM\Entity
*/
class PublicOffer extends Offer
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;


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

最佳答案

这是 Doctrine 中的已知行为(不是说:错误):在您的场景中,所有实体属性都必须是私有(private)的。只能通过 getter 访问它们。

关于Symfony2 MappedSuperClass 和 Doctrine :generate:entities,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25749418/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com