教义在更新现有实体时如何处理不变字段

问题描述 投票:0回答:1

假设我有一个映射到具有以下字段的MariaDB数据库表的实体:IDfirstNamelastName。此实体已从PHP对象的数据库中加载,我执行以下代码

/**
 * $myEntity is the entity and $em is the entity manager
 * $myEntity->getFirstName(); Would be John
 * $myEntity->getLastName(); Would be Doe
 */

$myEntity->setFirstName("Bob");

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

将在以下查询中显示此结果:

UPDATE `table`SET `firstName` = 'Bob' WHERE `ID`= "x"

或以下查询:

UPDATE `table` SET `firstName` = 'Bob', SET `lastName` = 'Doe' WHERE `ID` = 'x'

更笼统地说:Doctrine如何处理未更改的字段,以及所谓的“未更改”?相同的值,没有变量分配,还有其他吗?我在教义文档和Google上进行了搜索,但未发现有关此问题的信息。

我问是因为我有一个明显比示例中的实体大的实体(35列,包括2个TEXT列,并且通常一次只更新一两列。

php doctrine mariadb
1个回答
0
投票

Doctrine仅更新实际更改的内容,因此您的第一种情况将发生。

© www.soinside.com 2019 - 2024. All rights reserved.