由于我对Symfony和Doctrine很陌生,我有一个可能很愚蠢的问题;-)
有人能用简单的词向我解释集合(尤其是实体中的ArrayCollections)吗?它是什么,何时以及如何使用?(举个简单的例子)
在文档中无法很好地理解。。。
提前谢谢。
因此ArrayCollection
是一个简单的类,它实现了Countable
、IteratorAggregate
、ArrayAccess
SPL接口以及Benjamin Eberlei制作的接口Selectable
。
如果您不熟悉SPL
接口,则没有太多信息,但ArrayCollection
-允许您以类似数组的形式但以OOP的方式保存对象实例。使用ArrayCollection
而不是标准的array
的好处是,当您需要像count
、set
、unset
这样的简单方法来迭代到某个对象时,这将节省您大量的时间和工作,最重要的是非常重要:
- Symfony2在其核心中使用
ArrayCollection
,如果配置得当,它将为您做很多事情:- 将为您的关系生成"一对一、多对一…等"的映射
- 将在创建嵌入表单时为您绑定数据
何时使用:
-
通常它用于对象关系映射,当使用
doctrine
时,建议只为属性添加annotations
,然后在命令doctrine:generate:entity
之后创建setter和getter,对于构造函数类中的one-to-many|many-to-many
等关系,将实例化ArrayCollection
类,而不是简单的array
public function __construct() { $this->orders = new ArrayCollection(); }
-
使用示例:
public function indexAction() { $em = $this->getDoctrine(); $client = $em->getRepository('AcmeCustomerBundle:Customer') ->find($this->getUser()); // When you will need to lazy load all the orders for your // customer that is an one-to-many relationship in the database // you use it: $orders = $client->getOrders(); //getOrders is an ArrayCollection }
实际上,您不是直接使用它,而是在设置setter和getter时配置模型时使用它。