ম্যাজেন্টো মডেলটিতে নুল হওয়ার মান আপডেট করার সঠিক উপায় কী?


12

আমি NUL এ আপডেট করার জন্য একটি কাস্টম মডেলের মান পেতে একটি সমস্যা পাচ্ছি।

$model = Mage::getModel('custom/model')->load($id);
$model->setCustomValue(NULL);
$model->save();

এই কোডটি custom_valueডেটাবেজে ক্ষেত্রটি আপডেট করে না এবং ডাটাবেস মানটি নুল মান গ্রহণ করে (ডাটাবেসে ম্যানুয়ালি NULL সেট করা ভাল কাজ করে)।

সম্পাদনা: টিম নীচের ব্যবহার Zend_Db_Expr("NULL")করে উল্লিখিত হিসাবে মানটি নালায় সেট করে উল্লেখ করেছেন , কেউ কি ব্যাখ্যা করতে পারে যে কেন এটি ম্যাগানোতে প্রয়োজন এবং কেবল কেবল পিএইচপি নয় NULL?


কেবলমাত্র $ মডেল-> সেট কাস্টমভ্যালু ("") চেষ্টা করুন;
মুফাদ্দাল

টেবিল ক্ষেত্রের doubleধরণটি এবং আমি অন্যান্য সংখ্যার মতো চেষ্টা করেছি decimalএবং $model->setCustomValue("");করায় মান সেট করে0
ইনভোক করুন

7
কীভাবে $null = new Zend_Db_Expr("NULL");?
ব্যবহারকারী 487772

2
@ আমন্ত্রণ, আপনার উত্তরের জবাব দেওয়ার জন্য, আপনি যদি কেবল "NULL" এ সেট করেন তবে ম্যাগেন্টো কেবলমাত্র মনে করে আপনি মানটি আপডেট করতে চান না। টিম প্রস্তাবিত হিসাবে, আপনাকে নির্দিষ্ট করতে হবে যে এটি সেট করতে চান এটি "NULL" ডাটাবেস।
মেয়ররা

ধন্যবাদ @ মেয়র-দেব, আকর্ষণীয় আচরণ। আমি অনুমান করি যে এটির গেট-আউট-ক্লজ হিসাবে ডিজাইন করা হয়েছিল যখন মানটি নিজেই তৈরি করার সময় আপনার উদ্দিষ্ট আপডেটটি বাতিল করা উচিত।
আহ্বান

উত্তর:


2

এটি প্রায়শই কোনও isset()বনাম array_key_exists()সমস্যা, যখন আমি এটি সঠিকভাবে দেখি।

আমি এটি চেষ্টা করে দেখিনি, তবে কোড রিডিং থেকে আমি বলব, মানটি এখানে চেক করা হয়েছে:

\Mage_Eav_Model_Entity_Abstract::_saveAttribute
if (!isset($this->_attributeValuesToSave[$table])) {
    $this->_attributeValuesToSave[$table] = array();
}

এবং issetযেটি সেট অ্যারে কীতে মিথ্যা প্রত্যাবর্তন করে তা হ'ল NULL, আপনার মানটি ওভাররাইট করা হয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.