[英]doctrine:generate:entities vs generate:doctrine:entities in Symfony2 console
[英]Symfony2 MappedSuperClass and doctrine:generate:entities
我有一个“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?
谢谢你们 :)
OfferClass:
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...
}
PrivateOfferClass:
<?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;
}
}
PublicOfferClass:
<?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中已知的行为(不是说:bug):在您的场景中,所有实体属性都必须是私有的 。 只能通过getter访问它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.