2012-07-04 72 views
-1

我有一個問題,我在Symfony的項目,我得到這個錯誤主義階級/ Symfony2的對象不能轉換爲字符串

Catchable Fatal Error: Object of class Nicearma\MemesBundle\Entity\Usuario could not be converted to string in C:\wamp\www\24memes\vendor\doctrine-dbal\lib\Doctrine\DBAL\Statement.php line 131 

的問題是,我試圖做一個形式,從UsuarioInfo類,這個類有一個對象Usuario,形式做工精細,但去送我得到的消息 ,我不找到解決方案的信息,任何人都知道如何解決這一問題? 我有這個文件

registro.html.twig

<div class="usuario"> 
{{ form_row(form.usuario) }} 
</div> 
{{ form_rest(form) }} 

Usuario.php

namespace Nicearma\MemesBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Security\Core\User\UserInterface; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* Nicearma\MemesBundle\Entity\Usuario 
* 
* @ORM\Table(name="usuario") 
* @ORM\Entity(repositoryClass="Nicearma\MemesBundle\Repository\Usuario") 
*/ 
class Usuario implements UserInterface 
{ 
    /** 
    * @var integer $id 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

    /** 
    * @var string $nombre 
    * @Assert\Type(type="String") 
    * @Assert\MaxLength(255) 
    * @Assert\NotBlank 
    * @ORM\Column(name="nombre", type="string", length=255, nullable=false) 
    */ 
    private $nombre; 

    /** 
    * @var string $clave 
    * @Assert\NotBlank 
    * @Assert\Type(type="String") 
    * @Assert\MaxLength(255) 
    * @ORM\Column(name="clave", type="string", length=255, nullable=false) 
    */ 
    private $clave; 

    /** 
    * @var integer $punto 
    * 
    * @ORM\Column(name="punto", type="integer", nullable=false) 
    */ 
    private $punto; 

    /** 
    * @var UsuarioEstado 
    * 
    * @ORM\ManyToOne(targetEntity="UsuarioEstado") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="id_usuario_estado", referencedColumnName="id") 
    * }) 
    */ 
    private $UsuarioEstado; 

    /** 
    * @var IdUsuarioEstado 
    * @ORM\Column(name="id_usuario_estado", type="integer", nullable=false) 
    * }) 
    */ 
    private $idUsuarioEstado; 

    /** 
    * @var UsuarioTipo 
    * 
    * @ORM\ManyToOne(targetEntity="UsuarioTipo") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="id_usuario_tipo", referencedColumnName="id") 
    * }) 
    */ 
    private $UsuarioTipo; 

    /** 
    * @var idUsuarioTipo 
    * @ORM\Column(name="id_usuario_tipo", type="integer", nullable=false) 
    */ 

    private $idUsuarioTipo; 

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

    /** 
    * Set nombre 
    * 
    * @param string $nombre 
    */ 
    public function setNombre($nombre) 
    { 
     $this->nombre = $nombre; 
    } 

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

    /** 
    * Set punto 
    * 
    * @param integer $punto 
    */ 
    public function setPunto($punto) 
    { 
     $this->punto = $punto; 
    } 

    /** 
    * Get punto 
    * 
    * @return integer 
    */ 
    public function getPunto() 
    { 
     return $this->punto; 
    } 

    /** 
    * Set UsuarioEstado 
    * 
    * @param Nicearma\MemesBundle\Entity\UsuarioEstado $idUsuarioEstado 
    */ 
    public function setUsuarioEstado(\Nicearma\MemesBundle\Entity\UsuarioEstado $UsuarioEstado) 
    { 
     $this->UsuarioEstado = $UsuarioEstado; 
    } 

    /** 
    * Get UsuarioEstado 
    * 
    * @return Nicearma\MemesBundle\Entity\UsuarioEstado 
    */ 
    public function getUsuarioEstado() 
    { 
     return $this->UsuarioEstado; 
    } 
    /** 
    * Set idUsuarioEstado 
    * 
    * @param integer $idUsuarioEstado 
    */ 
    public function setIdUsuarioEstado($idUsuarioEstado) 
    { 
     $this->idUsuarioEstado = $idUsuarioEstado; 
    } 

    /** 
    * Get idUsuarioEstado 
    * 
    * @return integer 
    */ 
    public function getIdUsuarioEstado() 
    { 
     return $this->idUsuarioEstado; 
    } 

    /** 
    * Set UsuarioTipo 
    * 
    * @param Nicearma\MemesBundle\Entity\UsuarioTipo $idUsuarioTipo 
    */ 
    public function setUsuarioTipo(\Nicearma\MemesBundle\Entity\UsuarioTipo $UsuarioTipo) 
    { 
     $this->UsuarioTipo = $UsuarioTipo; 
    } 

    /** 
    * Get UsuarioTipo 
    * 
    * @return Nicearma\MemesBundle\Entity\UsuarioTipo 
    */ 
    public function getUsuarioTipo() 
    { 
     return $this->UsuarioTipo; 
    } 

    /** 
    * Set idUsuarioTipo 
    * 
    * @param integer $idUsuarioTipo 
    */ 
    public function setIdUsuarioTipo($idUsuarioTipo) 
    { 
     $this->idUsuarioTipo = $idUsuarioTipo; 
    } 

    /** 
    * Get idUsuarioTipo 
    * 
    * @return integer 
    */ 
    public function getIdUsuarioTipo() 
    { 
     return $this->idUsuarioTipo; 
    } 

    public function equals(UserInterface $user) 
    { 
     return $this->username === $user->getUsername(); 
    } 

    public function eraseCredentials() { 

    } 

    public function getPassword() { 
     return $this->clave; 
    } 

    public function getRoles() { 
     $this->idUsuarioTipo->getTipo(); 
    } 

    public function getSalt() { 
     return null; 
    } 

    public function getUsername() { 
     return $this->nombre; 
    } 

    /** 
    * Set clave 
    * 
    * @param string $clave 
    */ 
    public function setClave($clave) 
    { 
     $this->clave = $clave; 
    } 

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

UsuarioType.php

namespace Nicearma\MemesBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilder; 

class UsuarioType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('nombre') 
      ->add('clave') 
     ; 
    } 
    public function getDefaultOptions(array $options) 
    { 
    return array(
     'data_class' => 'Nicearma\MemesBundle\Entity\Usuario', 
    ); 
    } 
    public function getName() 
    { 
     return 'Usuario'; 
    } 
} 

usuarioInfo.php

namespace Nicearma\MemesBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 
/** 
* Nicearma\MemesBundle\Entity\UsuarioInfo 
* 
* @ORM\Table(name="usuario_info") 
* @ORM\Entity 
*/ 
class UsuarioInfo 
{ 
    /** 
    * @var integer $id 
    * 
    * @ORM\Column(name="id", type="integer", nullable=false) 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="IDENTITY") 
    */ 
    private $id; 

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

    /** 
    * @var Usuario 
    * @Assert\Type(type="Nicearma\MemesBundle\Entity\Usuario") 
    * @ORM\OneToOne(targetEntity="Usuario") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="id_usuario", referencedColumnName="id") 
    * }) 
    */ 
    private $Usuario; 

    /** 
    * @var idUsuario 
    * @ORM\Column(name="id_usuario", type="integer", nullable=false) 
    */ 
    private $idUsuario; 


    /** 
    * @var Nacionalidad 
    * @Assert\Type(type="Nicearma\MemesBundle\Entity\Nacionalidad") 
    * @ORM\ManyToOne(targetEntity="Nacionalidad") 
    * @ORM\JoinColumns({ 
    * @ORM\JoinColumn(name="id_pais", referencedColumnName="id") 
    * }) 
    */ 
    private $Pais; 



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

    /** 
    * Set correo 
    * 
    * @param string $correo 
    */ 
    public function setCorreo($correo) 
    { 
     $this->correo = $correo; 
    } 

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

    /** 
    * Set Usuario 
    * 
    * @param Nicearma\MemesBundle\Entity\Usuario $Usuario 
    */ 
    public function setUsuario(\Nicearma\MemesBundle\Entity\Usuario $Usuario) 
    { 
     $this->Usuario = $Usuario; 
    } 

    /** 
    * Get Usuario 
    * 
    * @return Nicearma\MemesBundle\Entity\Usuario 
    */ 
    public function getUsuario() 
    { 
     return $this->Usuario; 
    } 

    /** 
    * Set Pais 
    * 
    * @param Nicearma\MemesBundle\Entity\Nacionalidad $Pais 
    */ 
    public function setPais(\Nicearma\MemesBundle\Entity\Nacionalidad $Pais) 
    { 
     $this->Pais = $Pais; 
    } 

    /** 
    * Get Pais 
    * 
    * @return Nicearma\MemesBundle\Entity\Nacionalidad 
    */ 
    public function getPais() 
    { 
     return $this->Pais; 
    } 
} 

usuarioInfoType.php

namespace Nicearma\MemesBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilder; 
use Doctrine\ORM\EntityRepository; 

class UsuarioInfoType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('correo') 
      ->add('pais', 'entity', array ('class'=>'Nicearma\\MemesBundle\\Entity\\Nacionalidad','property'=>'nom_pais')) 
      ->add('usuario',new UsuarioType);  
     ; 
    } 

    public function getDefaultOptions(array $options) 
    { 
    return array(
     'data_class' => 'Nicearma\MemesBundle\Entity\UsuarioInfo', 
    ); 
    } 

    public function getName() 
    { 
     return 'UsuarioInfo'; 
    } 
} 

,且控制器

public function registroAction(Request $peticion){ 
     $regUs= new \Nicearma\MemesBundle\Entity\UsuarioInfo(); 
     $formulario = $this->createForm(new \Nicearma\MemesBundle\Form\UsuarioInfoType(), $regUs); 
     if ($peticion->getMethod() == 'POST') { 
      $formulario->bindRequest($peticion); 
      if ($formulario->isValid()) { 
       // $regUs->setIdUsuario(1); 
       $em = $this->getDoctrine()->getEntityManager(); 
       $ 
       $em->persist($regUs); 
       $em->flush(); 
       $base->flush(); 
       return $this->redirect($this->generateUrl('DenunciaEnviada')); 
      }else{ 

      } 
     } 
     return $this->render('NicearmaMemesBundle:Usuario:usuarioRegistro.html.twig', array('form' => $formulario->createView(),'titulo'=>'Crear usuario','descripcion'=>'usuario','claves'=>'us','nombre'=>'Prueba usuario')); 
    } 

回答

1

隨着OneToOne關係,你應該使用的,而不是你在做什麼 「JoinColumns(JoinColumn)」 的JoinColumn註解。 您可以從教義ORM文檔http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-one-bidirectional

所以看到的例子,你可以先嚐試更新UsuarioInfo的「Usuario」的屬性標註

/** 
* @var Usuario 
* @Assert\Type(type="Nicearma\MemesBundle\Entity\Usuario") 
* @ORM\OneToOne(targetEntity="Usuario") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="id_usuario", referencedColumnName="id") 
* }) 
*/ 
private $Usuario; 

/** 
* @var Usuario 
* @Assert\Type(type="Nicearma\MemesBundle\Entity\Usuario") 
* @ORM\OneToOne(targetEntity="Usuario") 
* @ORM\JoinColumn(name="id_usuario", referencedColumnName="id") 
*/ 
private $Usuario; 

同樣應適用於Usuario的「UsuarioEstado」,「UsuarioTipo」屬性。請參閱多對一http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-one-unidirectional的例子註釋

所以一定要正確配置者的實體通過檢查你使用正確的註釋的時候,然後再次嘗試:)

5

這麼簡單,它返回你的對象關係類。

- >使用的是在其上已上的關係類的進一步使用getter方法應用於查詢主類的getter方法。

例如

$ EXP-> getExperiencesCompany() - >的getName();