【发布时间】:2025-04-21 18:05:02
【问题描述】:
我想在更新现有数据库条目时总结或相加。
由于我必须使用 MagicCalls,我只是想知道如何处理这个问题。
在原始 sql 中,我会这样做:
UPDATE table SET value= value + 1 WHERE ....
但在这种情况下,我完全不知道如何解决。
我的代码如下:
实体:
class Properties
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="Sport", type="string", length=11, nullable=true)
*/
private $sport;
/**
* @var string
*
* @ORM\Column(name="Entertainment", type="string", length=11, nullable=true)
*/
private $entertainment;
/**
* @var string
*
* @ORM\Column(name="Wellness", type="string", length=11, nullable=true)
*/
private $wellness;
现在,我通过
获取这些列名$metadata = $em->getClassMetadata($className);
$columnNames=$metadata->getColumnNames();
我收到一个数组,我可以对它进行 foreach 并向它们中的每一个添加值,我必须使用访问器将其写回:
$properties= new Properties();
$accessor = PropertyAccess::createPropertyAccessorBuilder()
->enableMagicCall()
->getPropertyAccessor();
foreach($columnNames as $merkmale) {
$accessor->setValue($properties, $merkmale, 1);
}
那么如何通过计数来处理更新?我错过了一些我猜的东西
【问题讨论】: