2017-03-13 4 views
0
변환, 리턴 나의 양식은 다음과 같은 오류를 반환

:심포니 3 형태 엔티티는 오류

An exception occurred while executing 'UPDATE user_info SET country_of_residence = ?, want_children = ?, salary = ? WHERE id = ?' with params [{}, "a", "0", 22]:

Catchable Fatal Error: Object of class AppBundle\Entity\Country could not be converted to string

내 UserInfoType :

<?php 
// src/AppBundle/Form/UserInfoType.php 
namespace AppBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 
use Symfony\Component\Form\Extension\Core\Type\SubmitType; 
use Symfony\Component\Form\Extension\Core\Type\TextType; 
use Symfony\Component\Form\Extension\Core\Type\HiddenType; 
use Symfony\Component\Form\Extension\Core\Type\ChoiceType; 
use Symfony\Bridge\Doctrine\Form\Type\EntityType; 

class UserInfoType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('first_name', TextType::class, array('label' => 'Prénom')) 
      ->add('surname', TextType::class, array('label' => 'Nom')) 
      ->add('nationality', TextType::class, array('label' => 'Nationalité')) 
      ->add('country_of_residence', EntityType::class, array(
       'class' => 'AppBundle:Country', 
       'choice_label' => 'name',     
      )) 
      ->add('maritial_status', TextType::class, array('label' => 'Votre statut maritial')) 
      ->add('ethnique_origin', TextType::class, array('label' => 'Origine ethinique')) 
      ->add('spoken_language', TextType::class, array('label' => 'Langues parlés')) 
      ->add('children', TextType::class, array('label' => 'Possèdez vous des enfants')) 
      ->add('want_children', TextType::class, array('label' => 'Désirez vous des enfants')) 
      ->add('astrological_sign', TextType::class, array('label' => 'Votre signe astrologique')) 
      ->add('education', TextType::class, array('label' => 'Votre niveau d\'étude')) 
      ->add('profession', TextType::class, array('label' => 'Votre profession')) 
      ->add('salary', TextType::class, array('label' => 'Votre salaire')) 
      ->add('save', SubmitType::class, array('label' => 'Suivant')) 
     ; 

    } 

내 국가 기관 :

<?php 

namespace AppBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 

/** 
* Country 
* 
* @ORM\Table(name="country") 
* @ORM\Entity(repositoryClass="AppBundle\Repository\CountryRepository") 
*/ 
class Country 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="code", type="string", length=255) 
    */ 
    private $code; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255) 
    */ 
    private $name; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="language", type="string", length=255) 
    */ 
    private $language; 


    /** 
    * Get id 
    * 
    * @return int 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 

    /** 
    * Set code 
    * 
    * @param string $code 
    * 
    * @return Country 
    */ 
    public function setCode($code) 
    { 
     $this->code = $code; 

     return $this; 
    } 

    /** 
    * Get code 
    * 
    * @return string 
    */ 
    public function getCode() 
    { 
     return $this->code; 
    } 

    /** 
    * Set name 
    * 
    * @param string $name 
    * 
    * @return Country 
    */ 
    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 

    /** 
    * Get name 
    * 
    * @return string 
    */ 
    public function getName() 
    { 
     return $this->name; 
    } 

    /** 
    * Set language 
    * 
    * @param string $language 
    * 
    * @return Country 
    */ 
    public function setLanguage($language) 
    { 
     $this->language = $language; 
     return $this; 
    } 

    /** 
    * Get language 
    * 
    * @return string 
    */ 
    public function getLanguage() 
    { 
     return $this->language; 
    } 
} 

내 PROFIL 컨트롤러 :

/** 
* @Route("/survey/{slug}", name = "survey_render") 
*/ 
public function renderSurvey($slug, Request $request) 
{ 
    $user = $this->getUser(); 
    $em = $this->getDoctrine()->getManager(); 
    $user_info = $em->getRepository('ProfileBundle:UserInfo')->findOneBy(array('userId' => $user->getId())); 
    if (!$user_info) { 
     $user_info = new UserInfo(); 
     $user_info->setuserId($user->getId()); 
    } 

    $user_pref = $em->getRepository('ProfileBundle:UserPreference')->findOneBy(array('userId' => $user->getId())); 

    if (!$user_pref) { 
     $user_pref = new UserPreference(); 
     $user_pref->setuserId($user->getId()); 
    } 

    //$user_info = new UserInfo(); 

    switch ($slug) { 
     case 'vos_infos': 


      $form = $this->createForm(UserInfoType::class, $user_info); 
      break; 
     case 'votre_apparance': 
      $form = $this->createForm(UserAppearanceType::class, $user_info); 
      break; 
     case 'votre_style_vie': 
      $form = $this->createForm(UserLifeStyleType::class, $user_info);  
      break; 
     case 'ses_infos': 
      $form = $this->createForm(UserPrefInfoType::class, $user_pref); 
      break; 
     case 'son_apparence': 
      $form = $this->createForm(UserPrefAppearanceType::class, $user_pref); 
      break; 
     case 'son_style_vie': 
      $form = $this->createForm(UserPrefLifeStyleType::class, $user_pref); 
      break; 
     case 'votre_quiz': 
      $form = $this->createForm(UserLifeStyleType::class, $user_pref); 
      break; 
     default; 
      echo 'Lien incorrect'; 
      break; 
    } 

    $form->handleRequest($request); 
    if ($form->isSubmitted() && $form->isValid()) { 
     $form_data = $form->getData(); 
     $em = $this->getDoctrine()->getManager(); 
     $em->persist($form_data); 
     $em->flush(); 

전체 엔티티를 선택 결과가 아닌 형식으로 전달하려고하는 것 같습니다.

아무도 내가 여기에서 잘못하고있는 것에 대한 아이디어가 있습니까?

들으

+0

어떻게 사용자 또는 사용자 정보 엔티티가 생겼 befor을

는 (오류 발생)? – Medard

답변

0

user_info 당신이 국가 기관에 onetoone 관계로 필드 country_of_residence를 설정 않는 엔티티 인 경우?

1

나는 UserInfo에서 오류를 발견했습니다.

내가

하기 전에 (이 같은 네임 스페이스에없는) @ORM 앞에 추가하지 않았고 국가의 실체에 대한 올바른 경로를하지 않았다

/** 
* One Product has One Shipping. 
* @OneToOne(targetEntity="Country") 
* @JoinColumn(name="countryOfResidence", referencedColumnName="id") 
*/ 
private $countryOfResidence; 

후 :

/** 
    * One Product has One Shipping. 
    * @ORM\OneToOne(targetEntity="AppBundle\Entity\Country") 
    * @ORM\JoinColumn(name="countryOfResidence", referencedColumnName="id") 
    */ 
    private $countryOfResidence; 

올바른 방향으로 나를 안내해 주셔서 감사합니다.

+0

감사합니다, @ Yex777,이 답변을 더 빨리 찾을 수있었습니다. – LoveFineArt

0

동일한 유형의 오류가 발생했습니다. 제 경우에는 '소유하고있는'엔티티에서 잘못된 주석이었습니다.

/** 
* @ORM\OneToOne(targetEntity="RfpMatchBundle\Entity\Address", cascade={"persist"}) 
* @ORM\Column(nullable=true, unique=false) 
*/ 
private $address; 

후 (고정) :

/** 
* @ORM\OneToOne(targetEntity="RfpMatchBundle\Entity\Address", cascade={"persist"}) 
*/ 
private $address;`