$builder
->add('tecnicoId', 'entity', array(
'class' => 'MainHomeBundle:Tecnicos',
'property' => 'nombre',
'expanded' => false,
'multiple' => false
))
->add('cambiar', 'submit')
;
控制器
$form = $this->createForm(new ServicioseditType(), $datos);
$form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
$em->flush();
return $this->render('MainHomeBundle:Admin:editserv.html.twig', array("form"=>$form->createView()));
查看树枝
{{ form_errors(form.tecnicoId) }}
{{ form_widget(form.tecnicoId) }}
{{ form_widget(form.cambiar, { 'attr': {'class': 'boton'} }) }}
当我点击进行更新时会出现以下错误
ContextErrorException:Catchable Fatal Error:类的对象 Main \ HomeBundle \ Entity \ Tecnicos无法转换为字符串 C:\ XAMPP \ htdocs中\ digitalfix \供应商\原则\ DBAL \ LIB \原则\ DBAL \ Connection.php 第784行
当我看到sql的详细信息时,我看到tecnico_id的值为空
执行'UPDATE servicios SET tecnico_id时发生异常 =? WHERE id =?'与params [{},1]:
技术实体是字符串名称
class Tecnicos
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string
*
* @Assert\NotBlank()
* @Assert\Length(
* min = 8,
* max = 55,
* minMessage = "{{ limit }} caracteres minimo",
* maxMessage = "{{ limit }} caracteres maximo"
* )
*
* @ORM\Column(name="nombre", type="string", length=55, nullable=false)
*/
private $nombre;
public function __toString()
{
return $this->nombre;
}
服务实体是一个整数,因为只插入了没有名称的技术ID。
class Servicios
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var integer
*
* @ORM\Column(name="cliente_id", type="integer", nullable=false)
*/
private $clienteId;
/**
* @var integer
*
* @ORM\Column(name="tecnico_id", type="integer", nullable=true)
*/
private $tecnicoId = 1;
答案 0 :(得分:1)
将此方法添加到Tecnicos
实体:
public function __toString()
{
return $this->name; // could be anything that returns a string, even a string itself (but wouldn't be relevant).
}
答案 1 :(得分:0)
您的错误与您的SQL无关。
看起来像Object MainHomeBundle:Tecnicos错过了一个__toString()方法来显示表单中的选定实体。
这是你的第一个错误。
向此实体添加__toString()方法。