gpt4 book ai didi

php - Symfony2 - 扩展实体,抽象实体

转载 作者:行者123 更新时间:2023-12-02 06:54:45 24 4
gpt4 key购买 nike

我有 2 个具有相同字段的实体 - 父项、子项、订单。实际上这是一种机制,这 3 个字段不适用于该实体的内容 - 如名称、标题、类别等。

我想将这些字段设置到一个地方,一个类,我正在考虑应该把它放在哪里。它应该是一个抽象类吗?或者我应该做一个特征?

我也可以使用 ORM\Discriminator 机制,但我认为这是为了其他目的,而不是为了我想做的。

最佳答案

我会创建一个带有原则@MappedSuperClass 注释和共享字段的抽象类,并且实体会扩展它们

这是一个共享 created_at 字段的例子

namespace Your\CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\ORM\Mapping\MappedSuperclass;



/**
* Abstract base class to be extended by my entity classes with same fields
*
* @MappedSuperclass
*/
abstract class AbstractEntity {

/**
* @var integer
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;

/**
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;


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

/**
* Get createdAt
* @return \DateTime
*/
public function getCreatedAt() {
return $this->createdAt;
}

/**
* Set createdAt
*
* @param \DateTime $createdAt
*
* @return AbstractEntity
*/
public function setCreatedAt($createdAt)
{
$this->createdAt = $createdAt;

return $this;
}

}

你的实体都扩展了这个类:

class YourEntityClass extends AbstractEntity
{

在 YourEntityClass 中,$id 属性必须被“保护”

关于php - Symfony2 - 扩展实体,抽象实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782386/

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