2

如果我定义了以下类,

class Category {

    /**
     *
     * @var integer $id
     * @Column(name="id", type="integer",nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
    protected $id;

     /**
     *
     * @ManyToMany(targetEntity="Tag")
     * @JoinColumn(onDelete="SET NULL")
     */
    protected $tags;
}

我不应该能够通过以下方式获取与该类别相关的所有标签:

$categoryTags = $category->getTags();

上述赋值后 $categoryTags 中的对象是 Doctrine\ORM\PersistentCollection 类型,而我希望它是一个数组。

我使用 sql 命令手动在 category_tag 表中添加了关联值,但我可以看到它们是有效的。

我的标签类如下所示:

class Tag extends Tag{

    /**
     *
     * @var integer $id
     * @Column(name="id", type="integer",nullable=false)
     * @Id
     * @GeneratedValue(strategy="IDENTITY")
     */
    protected $id;


    /**
     * @Column(type="string",length=60,nullable=false)
     * @var string
     */
    protected $tag;

}
4

1 回答 1

6

Doctrine 不返回关联实体集合的简单数组。相反,它返回Doctrine\Common\Collections\Collection.

您可以像使用数组一样使用它们,因为它们扩展了Countable,IteratorAggregateArrayAccess接口。

如果你真的需要一个数组(我想不出原因),你可以使用该toArray()方法。

请阅读文档以了解为什么 Doctrine 不使用简单数组

于 2012-07-02T01:28:57.177 回答