如何在 symfony2 中持久化之前设置列值?
Posted
技术标签:
【中文标题】如何在 symfony2 中持久化之前设置列值?【英文标题】:how to set column value before persist in symfony2? 【发布时间】:2015-07-09 17:16:20 【问题描述】:假设我必须将列值公式设置为 1。那么在坚持之前我该怎么做。坚持后我应该在数据库中得到 1。
$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;
【问题讨论】:
显示你的实体类。 我在上面添加了实体代码 看到这个***.com/a/30373523/4841794 你需要持久化一个$formula
类型的实体而不是持久化一个整数。
我没有公式类型的实体
那你指的是什么? someothercolumn
是什么?
【参考方案1】:
您必须先更正您的实体定义,但这是您需要在控制器中执行的操作。在您确保正确定义实体之前,这将不会起作用。 (我不能,因为我不知道你的实体定义)
$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);
【讨论】:
【参考方案2】:当您在两个实体之间创建关系时,您不能传递单个值或包含单个值的变量。
实体作用于对象。因此,尝试传递某个实体的对象或创建一个具有某些值的对象,它将起作用。我在传递单个值时也面临同样的错误。只需传递一个实体关系注释的对象,就会拾取其他实体的连接列。
【讨论】:
以上是关于如何在 symfony2 中持久化之前设置列值?的主要内容,如果未能解决你的问题,请参考以下文章