【发布时间】: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