Doctrine/symfony2 类的对象无法转换为字符串


Doctrine/symfony2 Object of class could not be converted to string

我在Symfony 2中的项目有问题,我收到此错误

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) }}

乌苏阿里奥.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;
    }
}

乌苏阿里奥型.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;
    }
}

usuario信息类型.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'));
    }

如此简单, 它返回关系类的对象。

-

->您正在使用主类的 getter 方法,您已对其应用查询,进一步使用关系类的 getter 方法。

例如

$exp->getExperiencesCompany()->getName();

对于一对一关系,您应该使用 JoinColumn 注释,而不是您正在执行的操作"JoinColumns(JoinColumn)"。您可以从教义或文档中看到示例 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

因此,请确保通过检查是否使用了正确的注释来正确配置实体,然后重试:)