学说没有获得新添加的记录

时间:2018-12-12 23:47:06

标签: symfony doctrine

我有一个函数可以执行2件事。

  1. 保存现有或新的项目/记录
  2. 查询和重新排序商品

代码算法就是这样

public function doSomething($id = 0)
{
    $em = $this->getEntityManagerFromSomewhere();
    $service = $this->getSomeServiceFromSomewhere();
    $repo = $em->getRepository(Item::class);

    $conn = $em->getConnection();
    $conn->beginTransaction();

    if ($id) {
        $item = new Item();
    } else {
        $item = $repo->find($id);
    }

    $em->persist($item);
    $em->flush();

    $items = $repo->getAllItems();
    // changes are saved to the database
    $service->rearrangeItems($items);

    $conn->commit();
}

现在我遇到的问题是,如果它是一个新商品,则当我们尝试获取所有商品时,出于某种奇怪的原因,该新商品不包括在内。

我自己尝试过一些东西,对我有用的是插入

$em->clear(); // after flush

我不确定这是否是解决此问题的最佳方法,或者我是否滥用此功能。不过,当我进行测试时,它仍然有效。

1 个答案:

答案 0 :(得分:0)

public function doSomething($id = 0)

$ id默认为0,实际上,您每次都在创建项目。

  if ($id) {
        $item = new Item();
        $em->persist($item);
    } else {
        $item = $repo->find($id);
    }

此外,如果您不更新或创建新项目,则无需保留。

或者我的理解方式。

if($id)
{
    $item = $em->getRepository(Item::class)->find($id)
}
else
{
    $item = new Item();
    $em->persist($item);
}
$em->flush();