ArrayCollection in Symfony



由于我对Symfony和Doctrine很陌生,我有一个可能很愚蠢的问题;-)

有人能用简单的词向我解释集合(尤其是实体中的ArrayCollections)吗?它是什么,何时以及如何使用?(举个简单的例子)

在文档中无法很好地理解。。。

提前谢谢。

因此ArrayCollection是一个简单的类,它实现了CountableIteratorAggregateArrayAccess SPL接口以及Benjamin Eberlei制作的接口Selectable

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

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

相关内容

  • 没有找到相关文章

最新更新