我在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
因此,请确保通过检查是否使用了正确的注释来正确配置实体,然后重试:)