有人可以用简单的词语向我解释实体中的集合,尤其是
ArrayCollection
吗?这些是什么?何时以及如何使用它们?
(也许提供一个简单的例子)。
因此
ArrayCollection
是一个简单的类,它实现了 Countable
、IteratorAggregate
、ArrayAccess
SPL 接口以及 Benjamin Eberlei制作的接口
Selectable
。
如果您不熟悉
SPL
接口,则没有太多信息,但是 ArrayCollection
- 允许您以类似数组的形式但以 OOP 方式保存对象实例。使用 ArrayCollection
而不是标准 array
的好处是,当您需要 count
、set
、unset
等简单方法迭代到某个值时,这将为您节省大量时间和工作。对象,最重要的是非常重要:
core中使用
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时配置模型时使用它。