我在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) }}
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'));
}
答案 0 :(得分:5)
如此简单,它将返回关系类的对象。
- &GT;你正在使用你已经应用查询的主类的getter方法进一步使用关系类的getter方法。
例如
$ EXP-&GT; getExperiencesCompany() - &GT;的getName();
答案 1 :(得分:1)
使用OneToOne关系,您应该使用JoinColumn注释而不是您正在做的“JoinColumns(JoinColumn)”。 您可以从doctrine 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”属性。请参阅ManyToOne http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-one-unidirectional
的示例注释因此,请确保通过检查正在使用正确的注释来正确配置您的实体,然后再试一次:)