我有一個實體Key
(不是真正的名字,就知道密鑰是禁止的),我需要在一個循環中,得到Key
與state=1
,並將其更改爲state=2
。這是我的腳本:Symfony的原則排除堅持實體
/* Each object */
for ($i=0; $i < $order->getQuantity(); $i++) {
/* get available key */
$key = $this->getDoctrine()->getRepository('AppBundle:Key')->findOneBy(array('state' => 1));
$key->setState(2); // On la rend active
$this->_em()->persist($key);
}
}
我probleme是這一行:$key = $this->getDoctrine()->getRepository('AppBundle:Key')->findOneBy(array('state' => 1));
主義總是與state=1
相同的第一個關鍵。如果我直接在循環中刷新,那沒問題,但是我可以有一個非常大的循環,而且我不想刷新XXXX次。
有沒有辦法不獲得持久的實體?如果我還沒有堅持下去,我該如何對學說說state=1
ONLY?
謝謝!
也許我錯過了你的例子中的一些上下文,但你爲什麼在一個循環中一個接一個地獲取記錄,而不是用' - > findBy(['state'=> 1])''返回全部?事實上,如果你只是想更新一堆記錄,你可以創建一個DQL/SQL更新查詢,也可以將其放入一個自定義的'KeyRepository'中。 –