Если я определил следующий класс,Doctrine2 Многие ко многим не возвращает массив
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, в то время как я ожидаю, что он будет массивом.
Я добавил значения ассоциации в таблицу category_tag вручную с помощью команд sql, но я вижу, что они действительны.
Мои теги класс выглядит следующим образом:
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;
}
Почему вы ожидаете, что коллекция будет массив? См. Http://doctrine-orm.readthedocs.org/en/2.0.x/reference/architecture.html#architecture-persistent-fields – Phil
См. Также http://doctrine-orm.readthedocs.org/en/latest/reference /association-mapping.html?highlight=many-to-many#collections – Phil
'protected $ tags;' shouuld быть общедоступным или создавать метод для его возвращения как public public trat() {return $ this-> tags; } ' – manix