假设我有一个映射到具有以下字段的MariaDB
数据库表的实体:ID
,firstName
和lastName
。此实体已从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
列,并且通常一次只更新一两列。
Doctrine仅更新实际更改的内容,因此您的第一种情况将发生。