zii*_*web 3 symfony doctrine-orm
我有一个1:m关系Subitem和SubitemColor。现在,我想在中保存一些数据onFlush以修改的数据SubitemColor。问题:执行控制器时,我收到以下错误消息,您也可以在下面看到:
执行'INSERT INTO SubitemColor(代码,precio,pvp_recommended,file_name,activado,en_stock,区域,lets_fix_width_or_height_in_list,lets_fix_width_or_height_in_show,position_level_0,position_level_1,position_brand,subitem_id,color,id吗?)时发生异常。 ?,?,?,?,?,?,?,?,?)'和参数[2]:
SQLSTATE [HY093]:无效的参数编号:绑定变量的数量与令牌的数量不匹配
public function onFlush(Event \OnFlushEventArgs $eventArgs)
{
$em = $eventArgs->getEntityManager();
$uow = $em->getUnitOfWork();
$updates = $uow->getScheduledEntityUpdates();
$insertions = $uow->getScheduledEntityInsertions();
/////////// NEW SUBITEM_IMAGE OR SUBITEM_COLOR UPLOADED //////////
foreach ($insertions as $entity) {
if ($entity instanceof SubitemColor) {
//$entity->setLetsFixWidthOrHeightInList("jander");
//$entity->setLetsFixWidthOrHeightInList('width');
//$entity->setLetsFixWidthOrHeightInShow('width');
$entity->setEnStock(2);
$metaSubitemColor = $em->getClassMetadata(get_class($entity));
$uow->computeChangeSet($metaSubitemColor, $entity);
$uow->persist($entity);
}
}
}
//controller - controller - controller - controller
$subitem = new Subitem();
$em = $this->getDoctrine()->getManager();
$subitem->setNombre("jls");
$subitemColor = new SubitemColor();
$subitem->addSubitemColor($subitemColor);
$em->persist($subitem);
$em->persist($subitemColor);
$metaSubitem = $em->getClassMetadata(get_class($subitem));
$em->flush();
Run Code Online (Sandbox Code Playgroud)
使用recomputeSingleEntityChangeSet方法代替computeChangeSet
computeChangeSet 该方法只应被教义调用,并且对标记为刷新操作具有持久性的每个实体调用一次。
从数据库加载实体时,主义将其数据保存到originalEntityData数组中,然后检查是否不存在该实体的原始数据,然后该实体是新的,主义将其当前数据保存为原始数据,并用每个字段值填充更改集。
在第二次调用方法时,computeChangeSet具有新创建实体的原始数据,并且仅计算自上次调用computeChangeSet方法以来更改字段的更改集。
那就是为什么你永远不应该打电话computeChangeSet。
| 归档时间: |
|
| 查看次数: |
1253 次 |
| 最近记录: |