4
私は2つのエンティティSkill
とそのタイプSkillType
を持っています。関係は以下のようになります。私の関係はなぜ働きたくないのですか?
/**
* @ORM\Entity
* @ORM\Table(name="skills")
*/
class Skill
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var SkillType
* @ORM\ManyToOne(targetEntity="SkillType", inversedBy="skills")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id")
*/
protected $type;
//Getters and Setters
}
/**
* @ORM\Entity
* @ORM\Table(name="skill_types")
*/
class SkillType
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var Skill[]|ArrayCollection
* @ORM\OneToMany(targetEntity="AppBundle\Entity\Skill", mappedBy="type")
*/
protected $skills;
/**
* SkillType constructor.
*/
public function __construct()
{
$this->skills = new ArrayCollection();
}
//Getters and Setters
}
私も、私はエラーを修正しようとしていますどのようにこの2
class SkillType extends AbstractType
{
/**
* @inheritDoc
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', EntityType::class, [
'multiple' => false,
'class' => 'AppBundle\Entity\SkillType',
'choice_label' => 'id',
'by_reference' => false
]);
}
/**
* @inheritDoc
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'AppBundle\Entity\Skill',
]);
}
}
beetwen関係を作成するフォームがありますか?
createForm(SkillType::class, $entity
私の要求内容の前に両側$entityManager->merge($entity);
を追加
, cascade={"persist"}
を追加するには、以下のようになります。{"skill":{"type":1},"id":"1"}
。だから見ると、Skill
とid=1
とSkillType
との間には、id=1
の関係があるはずです。 私はフォームを送信するときに私が取得エラーです:選択フィールドに渡さ
エンティティを管理する必要があります。おそらくエンティティマネージャにそれらを保持しますか?
スタックトレース:
Symfony\Component\Form\Exception\RuntimeException: Entities passed to the choice field must be managed. Maybe persist them in the entity manager?
at n/a
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Form/ChoiceList/IdReader.php line 119
at Symfony\Bridge\Doctrine\Form\ChoiceList\IdReader->getIdValue(object(SkillType))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Form/ChoiceList/DoctrineChoiceLoader.php line 122
at Symfony\Bridge\Doctrine\Form\ChoiceList\DoctrineChoiceLoader->loadValuesForChoices(array(object(SkillType)), array(object(IdReader), 'getIdValue'))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/ChoiceList/LazyChoiceList.php line 134
at Symfony\Component\Form\ChoiceList\LazyChoiceList->getValuesForChoices(array(object(SkillType)))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/DataTransformer/ChoiceToValueTransformer.php line 37
at Symfony\Component\Form\Extension\Core\DataTransformer\ChoiceToValueTransformer->transform(object(SkillType))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/Form.php line 1092
at Symfony\Component\Form\Form->normToView(object(SkillType))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/Form.php line 352
at Symfony\Component\Form\Form->setData(object(SkillType))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php line 57
at Symfony\Component\Form\Extension\Core\DataMapper\PropertyPathMapper->mapDataToForms(object(Skill), object(RecursiveIteratorIterator))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/Form.php line 385
at Symfony\Component\Form\Form->setData(object(Skill))
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/Form.php line 477
at Symfony\Component\Form\Form->initialize()
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/FormBuilder.php line 226
at Symfony\Component\Form\FormBuilder->getForm()
in /var/www/public_html/api-hb/vendor/symfony/symfony/src/Symfony/Component/Form/FormFactory.php line 39
あなたは正しく、dbの問題でした。 – Vardius