PHP Doctrine:对象toArray()方法

时间:2015-11-10 10:04:40

标签: php symfony doctrine-orm doctrine

我正在尝试在对象类中编写toArray()方法。这是班级

集合

   class Collection{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\Column(type="string", length=255)
 * @Assert\NotBlank()
 */
private $name;

/**
 * @ORM\OneToMany(targetEntity="MyMini\CollectionBundle\Entity\CollectionObject", mappedBy="collection", cascade={"all"})
 * @ORM\OrderBy({"date_added" = "desc"})
 */
private $collection_objects;

/*getter and setter*/

public function toArray()
     {
       return [
           'id' => $this->getId(),
           'name' => $this->name,
           'collection_objects' => [

            ]
    ];
}
}

如果collection_objects的类型为\ Doctrine \ Common \ Collections \ Collection

,如何获取collection_objects属性数组?

1 个答案:

答案 0 :(得分:2)

\Doctrine\Common\Collections\Collection是一个也提供toArray()方法的界面。您将能够直接在您的集合中使用该方法:

public function toArray()
{
    return [
        'id' => $this->getId(),
        'name' => $this->name,
        'collection_objects' => $this->collection_objects->toArray()
    ];
}

但是有一个问题。 \Doctrine\Common\Collections\Collection::toArray()返回的数组是\MyMini\CollectionBundle\Entity\CollectionObject个对象的数组,而不是普通数组的数组。如果您的\MyMini\CollectionBundle\Entity\CollectionObject也有助于toArray()方法,您可以使用它将这些方法转换为数组,例如:

public function toArray()
{
    return [
        'id' => $this->getId(),
        'name' => $this->name,
        'collection_objects' => $this->collection_objects->map(
            function(\MyMini\CollectionBundle\Entity\CollectionObject $o) {
                return $o->toArray();
            }
        )->toArray()
    ];
}