gpt4 book ai didi

Symfony2 __toString() 错误

转载 作者:行者123 更新时间:2023-12-02 10:57:04 24 4
gpt4 key购买 nike

我在将实体保存回给我时遇到问题,出现此错误:

Catchable Fatal Error: Method My\BusinessBundle\Entity\Type::__toString() 
must return a string value in
/var/www/MyBusiness0_1/vendor/doctrine/orm/lib/Doctrine/ORM/ORMInvalidArgumentException.php line 113

奇怪的是,方法__toString()是实体Type!

class Type
{
//..

/**
* @var string
*
* @ORM\Column(name="type", type="string", length=100)
*/
private $type;

/**
* @ORM\OneToMany(targetEntity="MailTelCont", mappedBy="type")
*/
protected $mailTelContacts;

public function __construct()
{
$this->mailTelContacts = new \Doctrine\Common\Collections\ArrayCollection();
}

public function __toString()
{
return $this->getType();
}
//...

另一个奇怪的事情是,如果我将cascade ={"persist"} class MailTelCont放在ManyToOne关系“type”上,则不会显示此错误,而是在Type中保存一个新字段..

MailTelCont 类

class MailTelCont
{
//..
/**
* @var string
*
* @ORM\Column(name="contact", type="string", length=100)
*/
private $contact;

/**
* @ORM\ManyToOne(targetEntity="Type", inversedBy="mailTelContacts")
* @ORM\JoinColumn(name="type_id", referencedColumnName="id")
*/
private $type;

/**
* @ORM\ManyToOne(targetEntity="Anagrafica", inversedBy="mailTelContacts", cascade={"persist"})
* @ORM\JoinColumn(name="anagrafica_id", referencedColumnName="id")
* @Assert\Type(type="My\BusinessBundle\Entity\Anagrafica")
*/
private $anagrafica;

public function __toString()
{
return $this->getContact();
}

这样调用嵌套的“AnagraficType”形式:

class TypeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', 'entity', array(
'class' => 'My\BusinessBundle\Entity\Type',
'attr' => array('class' => 'conct'),
'property' => 'type',
'label' => 'Tipologia',
))
;
}
*****
class MailTelContType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('type', new TypeType())
->add('contact', 'text', array('label' => 'Contatto'))
;
}
*****
class AnagraficaType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('mailTelContacts', 'collection', array('type' => new MailTelContType(),
'allow_add' => true,
'allow_delete' => true,
'prototype' => true,
'by_reference' => false
))

我哪里做错了?

最佳答案

我认为这些值是null。你尝试过吗:

public function __toString()
{
return (string) $this->getType();
}

public function __toString()
{
return (string) $this->getContact();
}

这样,当值为 null 时,将被转换为字符串,并且您不应该得到此异常。

关于Symfony2 __toString() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14923359/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com