Symfony2 getter,setter,添加和删除

时间:2014-12-22 13:39:09

标签: symfony doctrine entity relationships

我对实体属性及其含义感到非常困惑。我知道get和set允许应用程序与受保护和私有属性进行交互,但是添加和删除呢?

运行命令时

php app/console doctrine:generate:entities bundle:entity

有时它会生成getter和setter,有时它会生成add和remove属性(通常也是get方法)。我注意到它有时也取决于与其他实体(即OnetoMany)的关系,但并非总是如此:-S

我能找到的Symfony文档中没有任何地方可以解决这个问题,这导致我看到了消息"没有属性" x"也没有一种方法存在并且具有公共访问权限。过于频繁的方式。任何人都可以对此进行简洁的解释吗?

2 个答案:

答案 0 :(得分:1)

addremove用于处理集合。例如,如果您的实体(让我们说A)包含B个元素的集合,那么该命令将提供addB()removeB()个公共方法帮助您添加和删除集合中的元素。它还会提供一个返回整个集合的getter。

该命令根据您正在使用的type属性生成方法(ArrayCollection,string,...)

答案 1 :(得分:1)

对于xxxToMany关联,Doctrine将生成一个"加法器"和#34;卸妆"而不是简单的二传手。我们的想法是从集合中轻松添加和/或删除单个对象,而无需每次都将整个集合传递给setter。

请注意,这些生成的方法是一个实现细节,您可以自由修改。例如,如果您更喜欢单个setter方法,请随意自行实现。

我个人不再依赖于Doctrine的存取器生成。手动执行此操作可以更好地控制实体的API,在Netbeans或PHPStorm等IDE中也非常容易。