我有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;
}
}
Run Code Online (Sandbox Code Playgroud)
您的实体都扩展了此类,例如:
class YourEntityClass extends AbstractEntity
{
Run Code Online (Sandbox Code Playgroud)
在YourEntityClass中,必须对$ id属性进行“保护”
归档时间: |
|
查看次数: |
3128 次 |
最近记录: |