【发布时间】:2019-10-20 17:45:50
【问题描述】:
我有一个表格,其中包含 id、technology 和 counter 列。如果给定值等于technology 列的值,则应更新该行。即counter(整数)的值加1。如果表中不存在该值,则应创建一个新行。
这是我尝试过的:
$technologiesOfficial = new TechnologiesOfficial();
$technology = $this->getDoctrine()->getRepository(TechnologiesOfficial::class)->findOneBy(array('technology' => $value));
if (!$technology) {
$technologiesOfficial->setTechnology($value);
$technologiesOfficial->setCounter(1);
}
else {
$counter = $technology->getCounter() + 1;
$technology->setTechnology($technology->getTechnology());
$technology->setCounter($counter);
}
$this->em->persist($technologiesOfficial);
$this->em->flush();
这是我得到的:
执行“INSERT INTO”时发生异常 技术_官方(技术,计数器,已批准)值(?,?, ?)' 带参数 [null, null, null]:
SQLSTATE[23000]:违反完整性约束:1048 列 “技术”不能为空
if 语句有效,并且将创建一个新行,但 else 部分会带来问题,即使我尝试使用 $technology->setTechnology('hello');。
【问题讨论】:
-
新插入似乎有问题。我说的对吗?
-
@SwaroopDeval 我可以插入。这不是问题,但我无法更新。
标签: php symfony doctrine-orm symfony4