2016-05-17 7 views
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関係を作成するフォームがありますか?

  1. createForm(SkillType::class, $entity

私の要求内容の前に両側$entityManager->merge($entity);を追加

  • にもいずれかの側のマッピングに, cascade={"persist"}を追加するには、以下のようになります。{"skill":{"type":1},"id":"1"}。だから見ると、Skillid=1SkillTypeとの間には、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 
    
  • 答えて

    2

    私は、これは、DBスキーマ内のエラーである可能性があるとします。まず、DB構造をチェックしてください私の考えは、この関係を削除し、doctrineスキーマ更新を実行し、この関係を再度作成することです。

    私は、このエラーが1つのエンティティでのみ発生する理由は、doctrineがスキーマの更新で正しく処理できなかったいくつかの以前の変更のために、DBに正しく反映されていないと考えています。

    +0

    あなたは正しく、dbの問題でした。 – Vardius

    関連する問題