【问题标题】:Symfony - duplicate entity object settingSymfony - 重复实体对象设置
【发布时间】:2020-05-08 15:18:47
【问题描述】:

我将一个表中的所有实体对象作为目标,以用相同的数据填充另一个表。

我想将我在 CardBalances 表中找到的结果设置为通过第一个表中相同的 card_id 找到的 Balances 表。

我写了方法,但它抛出了错误:

“调用数组上的成员函数 setBalance()”(所有对象都出错)

我得到的最接近的是:

$newBalance = null;

    $existingBalances = $this->getCardBalanceRepository()->findBy(['gpsCard' => $gpsCard]);

    foreach ($existingBalances as $balance) {

        $id = $gpsCard->getId();

        if(isset($id)) {
            $newBalance = $existingBalances;
        } else {
            $newBalance = new Balance();
            $this->em->persist($newBalance);
        }

        $newBalance->setBalance($balance->getBalance());
        $newBalance->setCurrency($balance->getCurrency());
        $newBalance->setisMain($balance->getisMain());
    }

    $this->em->flush();

如果数据不在数据库中,我想设置数据,如果要更新现有数据。

【问题讨论】:

  • 您的代码示例是......荒谬的。您在 else 块中创建一个新的 Balance ,但在 foreach 循环中覆盖它。我相信 if/else 的东西应该在 foreach 循环中......
  • 使用余额的id。这样,学说就会知道您是添加新项目还是更新它
  • 顺便说一句,你永远不会在循环中保持新的平衡
  • 我更新了我的帖子。 @Jakumi
  • 我使用你们的 cmets 来编辑我的代码。我更新了我的帖子。 @Cid

标签: php symfony doctrine-orm entity symfony4


【解决方案1】:

你需要改变

$newBalance = $existingBalances;

$newBalance = $balance;

因为 $existingBalances 是一个数组。

【讨论】:

    猜你喜欢
    • 2018-04-02
    • 2019-01-04
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多