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