Php 类的条令/symfony2对象无法转换为字符串

Php 类的条令/symfony2对象无法转换为字符串,php,symfony,doctrine,doctrine-orm,Php,Symfony,Doctrine,Doctrine Orm,我在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类,

我在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) }}
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'));
    }

对于OneToOne关系,应该使用JoinColumn注释,而不是JoinColumnsJoinColumn。 您可以从orm文档中看到示例

因此,您可以首先尝试更新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;

这同样适用于Usuario的UsuarioEstado、UsuarioTipo财产。请参见manytone的示例注释


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

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

->您使用的是主类的getter方法,在该主类上应用了对关系类的进一步使用getter方法的查询

比如说

$exp->GetExperienceCompany->getName

/**
 * @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;