[英]Symfony 3.1: How to extend the entity of a symfony bundle?
我已经实现了一个基于Symfony 3.1的论坛捆绑的Discutea / DForumBundle,并希望增强和添加功能。 到目前为止,我已经尝试过如何覆盖捆绑包的任何部分 ; 覆盖视图和语言包是可能的,但我也希望能够添加新实体并添加新的控制器。
在FOSUserBundle
的情况下,这是可能的,因为我们可以扩展用户实体并添加我们的自定义首选项,使调整成为可能。 对于这种捆绑来说,实现相同目标的最佳方法是什么?
任何提示或帮助将不胜感激。
======添加细节======
我认为扩展实体对我来说应该足够了,因为我只想添加一些新的字段,比如viewCount和all。 所以以下是我的新扩展实体:
<?php
namespace AppBundle\Entity;
use Discutea\DForumBundle\Entity\Model\BasePost;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Entity(repositoryClass="AppBundle\Repository\ForumPostRepository")
* @ORM\Table(name="df_post")
*/
class ForumPost extends BasePost
{
/**
* @ORM\Column(type="integer")
* @ORM\Column(name="views_count", type="integer", nullable=true)
*/
protected $viewCounts = 0;
/**
* Set viewCounts
*
* @param integer $viewCounts
*
* @return ForumPost
*/
public function setViewCounts($viewCounts)
{
$this->viewCounts = $viewCounts;
return $this;
}
/**
* Get viewCounts
*
* @return integer
*/
public function getViewCounts()
{
return $this->viewCounts;
}
}
在此之后,我尝试使用控制台进行架构更新; 但是我收到以下错误消息:
[Doctrine \\ DBAL \\ Schema \\ SchemaException]名称为“my_database.df_post”的表已存在。
如何克服这个并更新我现有的架构? 在此之后,我打算扩展其他实体。
首先,您需要了解您是否只想扩展捆绑包,或者您想要更改它的某些核心功能。
如果你想改变核心功能,那么我建议你分叉捆绑并直接处理分叉捆绑。
如果您只想扩展实体,那么:
在从第三方包实体扩展的包中创建您的实体( MyGuestEntity
)(例如: GuestEntity
)。
然后,您需要找到第三方包中使用GuestEntity
位置,并覆盖捆绑包中的此控制器。
在控制器中替换,用( MyGuestEntity
)覆盖GuestEntity
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.