Catchable Fatal Error: Object of class Proxies\__CG__\AppBundle\Entity\Ticket could not be converted to string
Catchable Fatal Error: Object of class Proxies\__CG__\AppBundle\Entity\Ticket could not be converted to string
我在使用 Symfony2 的项目中遇到问题。是一个 'worklog' 项目,包含特定项目的门票(问题)。但是当我尝试编辑工作日志条目时出现此错误:
Catchable Fatal Error: Object of class
Proxies__CG__\AppBundle\Entity\Ticket could not be converted to
string
这是我的数据库模型:
这是来自 AppBundle/Entity/Worklog/
的部分代码
/**
* @var \Ticket
*
* @ORM\ManyToOne(targetEntity="Ticket")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="ticket_ticket_id", referencedColumnName="ticket_id")
* })
*/
private $ticketTicket;
从AppBundle/Entity/Ticket/
/**
* @var integer
*
* @ORM\Column(name="ticket_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $ticketId;
你知道为什么我有这个错误吗?有什么帮助吗?
工作日志表:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('worklogDate')
->add('worklogDuration')
->add('worklogDescription')
->add('ticketTicket')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Worklog'
));
}
/**
* @return string
*/
public function getName()
{
return 'appbundle_worklog';
}
问题是您的实体字段不是预期的 return。
尝试添加:
public function __toString()
{
return (string) $this->getTicket();
}
为什么不在 Form
class 中完整声明您的字段。应该是这样的:
->add('ticketTicket', 'entity', array(
'class' => 'AppBundle\Entity\Ticket',
'property' => 'propertyName', //needed property's name
'label' => 'choice_field_label'
))
如果您需要更复杂的东西,那么只需为此字段查找所有内容,您可以使用 query_builder 选项:
->add('ticketTicket', 'entity', array(
'class' => 'AppBundle\Entity\Ticket',
'property' => 'propertyName', //needed property's name
'label' => 'choice_field_label',
'query_builder' => function(EntityRepository $er) {
return $er->findAllTicketNames();
//Where findAllTicketNames is the name of method in your
// ticketRepo which returns queryBuilder,
//instead of this you could just write your custom query like
//$qb = $er->createQueryBuilder('t');
//$qb->andWhere(...);
//return $qb;
}
))
p.s。
我的回答是从我以前的 复制而来的,并添加了一些小的修改以适应您的情况:)
我在使用 Symfony2 的项目中遇到问题。是一个 'worklog' 项目,包含特定项目的门票(问题)。但是当我尝试编辑工作日志条目时出现此错误:
Catchable Fatal Error: Object of class Proxies__CG__\AppBundle\Entity\Ticket could not be converted to string
这是我的数据库模型:
这是来自 AppBundle/Entity/Worklog/
的部分代码/**
* @var \Ticket
*
* @ORM\ManyToOne(targetEntity="Ticket")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="ticket_ticket_id", referencedColumnName="ticket_id")
* })
*/
private $ticketTicket;
从AppBundle/Entity/Ticket/
/**
* @var integer
*
* @ORM\Column(name="ticket_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $ticketId;
你知道为什么我有这个错误吗?有什么帮助吗?
工作日志表:
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('worklogDate')
->add('worklogDuration')
->add('worklogDescription')
->add('ticketTicket')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Worklog'
));
}
/**
* @return string
*/
public function getName()
{
return 'appbundle_worklog';
}
问题是您的实体字段不是预期的 return。 尝试添加:
public function __toString()
{
return (string) $this->getTicket();
}
为什么不在 Form
class 中完整声明您的字段。应该是这样的:
->add('ticketTicket', 'entity', array(
'class' => 'AppBundle\Entity\Ticket',
'property' => 'propertyName', //needed property's name
'label' => 'choice_field_label'
))
如果您需要更复杂的东西,那么只需为此字段查找所有内容,您可以使用 query_builder 选项:
->add('ticketTicket', 'entity', array(
'class' => 'AppBundle\Entity\Ticket',
'property' => 'propertyName', //needed property's name
'label' => 'choice_field_label',
'query_builder' => function(EntityRepository $er) {
return $er->findAllTicketNames();
//Where findAllTicketNames is the name of method in your
// ticketRepo which returns queryBuilder,
//instead of this you could just write your custom query like
//$qb = $er->createQueryBuilder('t');
//$qb->andWhere(...);
//return $qb;
}
))
p.s。
我的回答是从我以前的