我有數組類型字段主義實體:如何強制Doctrine更新數組類型字段?
/**
* @ORM\Table()
*/
class MyEntity
{
(...)
/**
* @var array $items
*
* @ORM\Column(type="array")
*/
private $items;
/**
* @param SomeItem $item
*/
public function addItem(SomeItem $item)
{
$this->items[] = $item;
}
(...)
}
如果我添加元素的數組,該代碼工作正常:
$myEntityObject->addItems(new SomeItem());
$EntityManager->persist($myEntityObject);
$EntityManager->flush();
$myEntityObject
保存與正確數據的數據庫(陣列被序列化,並在查詢數據庫時反序列化)。
不幸的是,當我改變數組中的一個對象而不更改數組的大小時,如果我試圖保存對數據庫的更改,則Doctrine不執行任何操作。
$items = $myEntityObject->getItems();
$items[0]->setSomething(123);
$myEntityObject->setItems($items);
$EntityManager->persist($myEntityObject);
$EntityManager->flush();
print_r($myEntityObject);
雖然,在改變對象的數據代碼顯示的最後一行print_r
,原則不知道什麼東西該數組內改變,如果數組的大小沒有改變。有什麼方法可以強制Doctrine保存在該字段中所做的更改(或輕輕通知它需要保存的該字段中的更改)?
我正在嘗試此操作,如果此操作將盡快爲您提供獎勵。你的回答聽起來很棒!非常感謝@Vladim Ashikhman – Mick
令人驚歎!我只能在2小時內歸功賞金,但這都是你的。我在這花了很多時間,說實話,我不是唯一的一個。邏輯很漂亮。你真棒!請參考這篇文章[這個問題](http://stackoverflow.com/questions/13227658/doctrine-does-not-update-a-simple-array-type-field/13232142#13232142)。事實證明,這是一個非常相似的問題。做得好! – Mick
我已經改變了setMethod()了一下,它現在可以工作,如果你改變數組的光標。 –