实体中的集合和数组集合是什么?

问题描述 投票:0回答:1

有人可以用简单的词语向我解释实体中的集合,尤其是

ArrayCollection
吗?这些是什么?何时以及如何使用它们?

(也许提供一个简单的例子)。

symfony doctrine-orm arraycollection
1个回答
11
投票

因此

ArrayCollection
是一个简单的类,它实现了
Countable
IteratorAggregate
ArrayAccess
SPL 接口以及
Benjamin Eberlei
制作的接口 Selectable

如果您不熟悉

SPL
接口,则没有太多信息,但是
ArrayCollection
- 允许您以类似数组的形式但以 OOP 方式保存对象实例。使用
ArrayCollection
而不是标准
array
的好处是,当您需要
count
set
unset
等简单方法迭代到某个值时,这将为您节省大量时间和工作。对象,最重要的是非常重要

  • Symfony2 在他的
    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时配置模型时使用它。

© www.soinside.com 2019 - 2024. All rights reserved.