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 テーブルに関連値を追加しましたが、それらが有効であることを確認できます。

私の Tags クラスは次のようになります。

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これらは、IteratorAggregateおよびArrayAccessインターフェイスを拡張するため、配列と同じように使用できます。

本当に配列が必要な場合(理由が思い浮かびません)、toArray()メソッドを使用できます。

Doctrine が単純な配列を使用しない理由を理解するには、ドキュメントをお読みください。

于 2012-07-02T01:28:57.177 に答える