Php 如何在symfony2中持久化之前设置列值?
假设我必须将列值公式设置为1。那么,在坚持之前,我该怎么做呢。在持久化之后,我应该在数据库中得到1Php 如何在symfony2中持久化之前设置列值?,php,symfony,symfony-2.6,Php,Symfony,Symfony 2.6,假设我必须将列值公式设置为1。那么,在坚持之前,我该怎么做呢。在持久化之后,我应该在数据库中得到1 $f=1; $product->setFormula($f); $em->persist($product); 如果我使用上面的行,它会给出一个错误 的“Nimo\MrmdBundle\Entity\Product”类型的预期值 获取关联字段“Nimo\MrmdBundle\Entity\Product#$basedOn” 改为“整数” 这是实体代码 /** * @ORM\
$f=1;
$product->setFormula($f);
$em->persist($product);
如果我使用上面的行,它会给出一个错误
的“Nimo\MrmdBundle\Entity\Product”类型的预期值
获取关联字段“Nimo\MrmdBundle\Entity\Product#$basedOn”
改为“整数”
这是实体代码
/**
* @ORM\ManyToOne(targetEntity="Product")
* @ORM\JoinColumn(name="formula", referencedColumnName="someothercolumn",nullable=true)
**/
private $formula = null;
您必须首先更正实体定义,但以下是您需要在控制器中执行的操作。在确保正确定义实体之前,此操作将不起作用。(我不能,因为我不知道您的实体定义)
在两个实体之间创建关系时,不能传递单个值或包含单个值的变量
实体在对象上工作。因此,尝试传递某个实体的对象,或者创建一个具有某个值的对象,这将起作用。我在传递单个值时也会遇到相同的错误。只需传递一个实体的对象关系注释,就会拾取其他实体的连接列 显示您的实体类。我已在上面添加了实体代码。请参见,您需要持久化类型为
$formula
的实体,而不是持久化类型为整数的实体。我没有类型为formula的实体,那么您引用它的是什么?什么是someothercolumn
?
$f=1;
$em = $this->container->get('doctrine.orm.entity_manager');
$repo = $em->getRepository('AppBundle:Formula'); //This should be your referred entity
//You can also do findOneByName below
$formula= $repo->findOneById($id); //This should be the primary key of the referred entity NOT 1
$formula->setFormula($f);
$em->persist($formula);