我的项目使用Symfony2时出现问题。是一个'工作日志'项目,具有特定项目的故障单(问题)。但是当我尝试编辑工作日志条目时,我有这个错误:
Catchable Fatal Error:类的对象 Proxies__CG __ \ AppBundle \ Entity \ Ticket无法转换为 串
这是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';
}
答案 0 :(得分:1)
问题是您的实体字段没有预期的回报。 尝试添加:
public function __toString()
{
return (string) $this->getTicket();
}
答案 1 :(得分:0)
为什么不在Form
课程中完整声明您的字段。它会像这样:
->add('ticketTicket', 'entity', array(
'class' => 'AppBundle\Entity\Ticket',
'property' => 'propertyName', //needed property's name
'label' => 'choice_field_label'
))
如果您需要更复杂的smth,那么只需查找此字段的所有内容,您可以使用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。
我的答案是从我之前的answer复制而来的,并且根据您的情况添加了一些小修改:)