我能';t使用my select symfony 2中的实体进行更新2
控制器我能';t使用my select symfony 2中的实体进行更新2,symfony,Symfony,控制器 $builder ->add('tecnicoId', 'entity', array( 'class' => 'MainHomeBundle:Tecnicos', 'property' => 'nombre', 'expanded' => false, 'multiple' => false )) ->add('cambiar', 'submit') ; 查看细枝 $form = $this->crea
$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()));
当我单击进行更新时,出现以下错误
$builder
->add('tecnicoId', 'entity', array(
'class' => 'MainHomeBundle:Tecnicos',
'property' => 'nombre',
'expanded' => false,
'multiple' => false
))
->add('cambiar', 'submit')
;
ContextErrorException:可捕获的致命错误:类的对象
无法在中将Main\HomeBundle\Entity\Tecnicos转换为字符串
C:\xampp\htdocs\digitalfix\vendor\doctor\dbal\lib\doctor\dbal\Connection.php
第784行
当我看到sql的细节时,我看到tecnico_id的值是空的
执行“更新服务设置tecnico\u id”时发生异常
= ? 其中id=?'带有参数[{},1]:
技术实体是字符串名称
{{ form_errors(form.tecnicoId) }}
{{ form_widget(form.tecnicoId) }}
{{ form_widget(form.cambiar, { 'attr': {'class': 'boton'} }) }}
服务实体是一个整数,因为只插入了没有名称的技术id。
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;
}
您的错误与SQL无关 似乎对象MainHomeBundle:Tecnicos遗漏了一个_toString()方法来在表单中显示所选实体 这是您的第一个错误所说的
向该实体添加一个_toString()方法。将该方法添加到您的
Tecnicos
实体:
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;
您能否说明您是如何在Servicios实体类中定义与Tecnicos实体之间的关系的?数据库或实体中没有关系,只有要关联的id,也就是说,在em flush之前先转储$datos的内容,看看您得到了什么。我猜您尝试更新的Servicios实例包含实际的Tecnicos实体实例,单位为$tecnicoId(而不是id)…为什么要调用getter?这是个坏建议。如果是,则$this->name;现在进行更新,但保留数据库的字段0。您需要提供完整的FormType以及尝试将其映射到的对象。现在进行更新,但保留数据库的字段0