5
我有保存实体回我这个错误的一个问题:Symfony2的__toString()错误
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()是实体型!
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();
}
//...
另一个奇怪的事情是,如果我把级联= {“坚持”}类MailTelCont上多对一的关系“型”不显示我这个错误,但在保存类型的新领域..
类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
))
我在哪里做错了?
谢谢你的回复, 但现在这个错误: '一个新的实体通过中没有配置级联的关系,“我的\ BusinessBundle \实体\ MailTelCont#型”找到持续经营的实体:Telefono。要解决这个问题:要么显式调用EntityManager#persist()在这个未知的实体上,要么配置cascade在映射中坚持这个关联,例如@ManyToOne(..,cascade = {“persist”})' 如果我把'cascade = {“persist”}'然而,在类型中保存一个新的字段,你不必因为类型只是一个容器的联系类型的选择(例如电子邮件,传真,电话..) – Lughino 2013-02-17 17:01:20
它适用于我,谢谢;) – 2014-01-03 17:39:29