2010-08-26 11 views
5

Modelde bir sütun türü object var. Ancak, bir model yükler ve nesnenin bir özelliğini değiştirir ve sonra yeniden kaydedersem, nesneyi yeniden serileştirir gibi görünmez. Örneğin.Doctrine: Nesne sütun değeri nasıl kirli olarak işaretlenir?

$model_instance = $table->find(1); 
$object = $model_instance->object_column; 
$object->someProp = 'new value'; 
$model_instance->save(); //has no effect 

Ben aynı nesneye hem referanslar çünkü false döndüren !== kullanarak eski ve yeni değerler karşılaştırarak değişiklik için kontrol ediyor, çünkü bu olduğunu düşünüyorum.

Tasarruf etmeden önce nesneyi klonlayabilirim, ancak açıkça görebildiğim daha açık bir yol olmalı.

cevap

4

Alanı değiştirmediğiniz için durum değiştirilmez (yalnızca referans). İlgilendiğiniz takdirde, set() ve _set() yöntemlerinin Doctrine_Record sınıfında nasıl okunduğunu merak ediyorsunuz.

elle bir devlet() yöntemiyle bir kaydın durumunu değiştirebilirsiniz: Bu değişiklikleri kalıcı() tasarrufu zorlamak gerektiğini

$model_instance->state(Doctrine_Record::STATE_DIRTY); 

.

İlgili konular