使用doctrine,symfony2更新數據庫中的多個記錄的最佳方法是什麼?Symfony - 更新多個記錄
我收到了必須更新的記錄ID數組。
我想分配給每個記錄其索引從接收數組到列show_order。 所以,如果我收到數組$陣列=陣列(22,1,5,10),那麼我想這樣做
$i = 0;
foreach($array as $a) {
$record = $this->getDoctrine->getRepository('AcmeBundle:SomeEntity')->findOneById($a);
if ($record != null) $record->setOrder($i++);
}
$this->getDoctrine()->getEntityManager()->flush();
但它是可怕的方式,因爲每個記錄我做一個選擇,所以查詢的號碼是上)。
如何做得更好?
我有現在一個想法:把所有的記錄,檢查哪個順序發生了變化,只對其進行更新。但是,由於這種解決方案,我感到不滿意。所以它會做一個SELECT來獲取所有記錄,很少選擇(獲取實體對象)和少許更新(或者可能只有一個,因爲我認爲在flush()之後調用更新)。 – 2012-01-06 22:40:37
如果使用doctrine2沒有好的解決方案,也許我應該在清晰的PHP中執行,並使用CASE WHEN ... THEN ...在SQL查詢中? – 2012-01-07 00:58:01