두 개의 ManyToMany 관련 엔티티, 즉 category
및 tag
으로 작업하고 있습니다.속성 경로 "tagname"의 값을 변환 할 수 없습니다. Doctrine Common Collections Collection 객체가 필요합니다.
엔티티 Tag
(관련 세부 사항) :
/**
*
* @var string
*
* @ORM\Column(name="tagname", type="string")
*/
protected $tagname;
/**
* @ORM\ManyToMany(targetEntity="Category", mappedBy="tags")
*/
protected $categories;
엔티티 카테고리 (관련 세부 사항) :
/**
*
* @var string
*
* @ORM\Column(name="CategoryName", type="string",length=200)
*/
protected $categoryname;
/**
* @ORM\ManyToMany(targetEntity="Tag", inversedBy="categories")
*/
protected $tags;
나는 선택 입력 (카테고리 유형)을 선택 다중와 형태가 -input (TagType) 필드. 두 필드는 모두 EntityType 필드입니다. TagType은 CatgoryType 내에 내장되어 있습니다.
이 경우 나는 cascade=persist
기능을 사용할 수없고 제출 된 태그를 내 컨트롤러에 수동으로 추가 할 수 없습니다. 제출시 양식 데이터는 아무런 문제없이 데이터베이스에 보관됩니다. 페치의 Unable to transform value for property path "tagname": Expected a Doctrine\Common\Collections\Collection object.
위해서 var_dump 결과 - 나는 내 컨트롤러에 제출 된 카테고리 (및 관련 태그)를 가져, 양식에 전달할 때
문제는 제출 후,이 오류가 발생한다 category 객체 (var_dump($category->getTags()->getValues());
)는 관련된 태그 객체의 배열을 제공하고 속성은 protected 'tagname' => string 'tag1'
입니다.
Interface Collection
은 PHP 배열과 매우 흡사하며 내 생각에 tagname
필드는 ArrayCollection 또는 Collection 개체 형식의 모든 tagname
을 필요로합니다. 구체적인 차이점이 무엇인지 확실하지 않습니다.
그러나 아직 내 양식에 이미 보존 된 범주 개체를 어떻게 전달합니까? 여기
가CategoryType
의
categoryname
및
tags
필드입니다 : 여기
$builder->add('categoryname', EntityType::class, array(
'class' => 'AppBundle:Category',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('c')
->orderBy('c.id', 'ASC');
},
'choice_label' => 'categoryname',
'expanded' => false,
'multiple' => false,
'label' => 'Choose Category',
));
$builder->add('tags', CollectionType::class, array(
'entry_type' => TagType::class,
'allow_add' => true,
'by_reference' => false,
'allow_delete' => true,
));
인 TagType
에 포함 된 tagname
필드 :
$builder->add('tagname', EntityType::class, array(
'class' => 'AppBundle:Tag',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('t')
->orderBy('t.id', 'ASC');
},
'choice_label' => 'tagname',
'expanded' => false,
'multiple' => true,
'label' => 'Choose Tags',
));
어떤 아이디어가? 이 문자열의, 당신의 Tag
엔티티에 따르면
$builder->add('tagname', EntityType::class, array()
, Tag::$tagname
엔티티 수집되지 않습니다 :
어떻게 해결 했습니까? –