Php 类的条令/symfony2对象无法转换为字符串
我在Symfony 2中的项目有问题,我得到了这个错误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类,
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;