2010-08-26 10 views
5

मेरे पास मॉडल में object का एक स्तंभ है। लेकिन अगर मैं एक मॉडल लोड करता हूं, और ऑब्जेक्ट की संपत्ति बदलता हूं, और फिर पुन: सहेजता हूं, तो यह ऑब्जेक्ट को फिर से क्रमबद्ध नहीं लगता है। जैसेसिद्धांत: ऑब्जेक्ट कॉलम मान को गंदे के रूप में कैसे चिह्नित करें?

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

मुझे लगता है कि इस वजह से यह !==, जो झूठे रिटर्न क्योंकि वे एक ही वस्तु के लिए दोनों संदर्भ हैं का उपयोग कर पुराने और नए मूल्यों की तुलना द्वारा संशोधन के लिए जाँच कर रहा है।

मैं सहेजने से पहले ऑब्जेक्ट को क्लोन कर सकता था लेकिन स्पष्ट रूप से एक स्पष्ट तरीका होना चाहिए जिसे मैंने याद किया है।

उत्तर

4

राज्य नहीं बदला गया है क्योंकि आप फ़ील्ड को अपडेट नहीं करते हैं (केवल संदर्भ)। यदि आप रुचि रखते हैं कि यह कैसे होता है सेट() और _set()पद्धतियों में Doctrine_Record कक्षा।

आप मैन्युअल रूप से एक राज्य() विधि के साथ एक रिकॉर्ड की स्थिति बदलने कर सकते हैं:

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

इससे आपके परिवर्तन लागू करने के लिए बचाने()मजबूर करना चाहिए।

संबंधित मुद्दे