我对实体属性及其含义感到非常困惑。我知道get和set允许应用程序与受保护和私有属性进行交互,但是添加和删除呢?
运行命令时
php app/console doctrine:generate:entities bundle:entity
有时它会生成getter和setter,有时它会生成add和remove属性(通常也是get方法)。我注意到它有时也取决于与其他实体(即OnetoMany)的关系,但并非总是如此:-S
我能找到的Symfony文档中没有任何地方可以解决这个问题,这导致我看到了消息"没有属性" x"也没有一种方法存在并且具有公共访问权限。过于频繁的方式。任何人都可以对此进行简洁的解释吗?
答案 0 :(得分:1)
add
和remove
用于处理集合。例如,如果您的实体(让我们说A
)包含B
个元素的集合,那么该命令将提供addB()
和removeB()
个公共方法帮助您添加和删除集合中的元素。它还会提供一个返回整个集合的getter。
该命令根据您正在使用的type
属性生成方法(ArrayCollection,string,...)
答案 1 :(得分:1)
对于xxxToMany关联,Doctrine将生成一个"加法器"和#34;卸妆"而不是简单的二传手。我们的想法是从集合中轻松添加和/或删除单个对象,而无需每次都将整个集合传递给setter。
请注意,这些生成的方法是一个实现细节,您可以自由修改。例如,如果您更喜欢单个setter方法,请随意自行实现。
我个人不再依赖于Doctrine的存取器生成。手动执行此操作可以更好地控制实体的API,在Netbeans或PHPStorm等IDE中也非常容易。