【发布时间】:2014-06-24 14:36:57
【问题描述】:
目前,这是我通过查找和更新更新选定行的方式。
private function turnOnLight($entity_manager, $model, $year)
{
// Is this an optimized way to update a single column?
// It seems not as we need 2 rounds DB communication trip.
$car = $entity_manager->findOneBy(array(
'model' => $model,
'year' => $year,
'light' => 0
));
if (is_null($car)) {
return;
}
$car->light = 1;
$entity_manager->persist($car);
$entity_manager->flush();
}
但是,我觉得这不够高效,因为它需要 2 个数据库操作(查找和更新)。
上面的代码有什么办法优化吗?
【问题讨论】:
-
你会在这里找到答案:stackoverflow.com/questions/4337751/…
-
对我来说确实感觉不错,你需要从数据库中提取实体然后更新它,如果它存在的话,这会让你在找不到实体时有特定的行为。在“一种学说方式”中,我不认为这段代码可以优化。如果您需要,您仍然可以根据您的条件直接处理an update query
标签: php symfony doctrine-orm