আমার একটি কাস্টম টেবিল আছে আমি এসকিউএল কোয়েরি ছাড়াই ম্যাজেন্টো সংগ্রহ ব্যবহার করে টেবিলটি কাটাতে চাই ।
আশা করি কেউ কেউ কিছু দরকারী তথ্য সরবরাহ করবেন।
আমার একটি কাস্টম টেবিল আছে আমি এসকিউএল কোয়েরি ছাড়াই ম্যাজেন্টো সংগ্রহ ব্যবহার করে টেবিলটি কাটাতে চাই ।
আশা করি কেউ কেউ কিছু দরকারী তথ্য সরবরাহ করবেন।
উত্তর:
ম্যাজেন্টো এর পক্ষে সমর্থন নেই (যতদূর আমি জানি)
তবে আপনি আপনার সংস্থান মডেলটিতে (সংগ্রহ সংস্থান মডেল নয়) এমন একটি পদ্ধতি প্রয়োগ করতে পারেন যা টেবিলটি কেটে যাবে।
এটার মতো কিছু:
public function truncate() {
$this->_getWriteAdapter()->query('TRUNCATE TABLE '.$this->getMainTable());
return $this;
}
তারপরে আপনি এটিকে আপনার কোডটিতে কল করতে পারেন:
Mage::getResourceModel('[module]/[entity]')->truncate();
তবে এটি একটি অত্যন্ত বিপজ্জনক পদ্ধতির। truncate
বিবৃতি বিরতি লেনদেন, তাই এটি ক্ষেত্রে ফিরে ঘূর্ণিত করা যাবে না আপনাকে হতে হবে।
আমি পরিবর্তে টেবিলের প্রতিটি সত্তা মোছার পরামর্শ দিই।
$collection = Mage::getModel('[module]/[entity]')->getCollection();
foreach ($collection as $item) {
$item->delete();
}
এর নীচের দিকটি এটি টেবিলের ইনক্রিমেন্ট আইডিটিকে পুনরায় সেট করে না doesn't তবে এটি নিরাপদ।
সম্পাদনা ।
প্রধান সারণীর ইনক্রিমেন্ট আইডি আপডেট করতে আপনি আপনার সংস্থান মডেলটিতে একটি নতুন পদ্ধতি যুক্ত করতে পারেন যা এরকম কিছু করে।
public function changeAutoIncrement($increment = 1) {
$this->_getWriteAdapter()->query('ALTER TABLE '.$this->getMainTable().' AUTO_INCREMENT = '. $increment);
}
তারপরে কোডটিতে আপনার পদ্ধতিটি কল করুন:
Mage::getResourceModel('[module]/[entity]')->changeAutoIncrement();
Mage_Catalog_Model_Product
। সংস্থান মডেল আছে। উদাহরণ: Mage_Catalog_Model_Resource_Product
। এবং সংগ্রহ সংস্থান মডেল আছে Mage_Catalog_Model_Resource_Product_Collection
।
$model = Mage::getModel('[module]/[model]');
$resource = $model->getResource();
$connection = $resource->getReadConnection();
/* @see Varien_Db_Adapter_Pdo_Mysql */
$connection->truncateTable($resource->getMainTable());
$connection->changeTableAutoIncrement($resource->getMainTable(), 1);
দ্রষ্টব্য: মাইএসকিউএল 1
যখন কোনও টেবিলটি কাটা হয় তখন স্বতঃসংশোধের মানটি পুনরায় সেট করে , সুতরাং এটির প্রয়োজন হয় না, তবে changeTableAutoIncrement
যদি কেউ অন্য মান দিয়ে এআই শুরু করতে চায় তবে দরকারী হতে পারে।
সম্পাদনা:
এই প্রশ্নটি magento-1.7 / magento-1.8 এর সাথে ট্যাগ করা হয়েছিল ... কেবল উত্তরটি সম্পূর্ণ করতে:
changeTableAutoIncrement
1.8.0.1 এ যুক্ত হয়েছিলtruncateTable
1.6.0.0-alpha1 এ যুক্ত হয়েছিলআমি একটি মডেল তৈরি করেছি এবং কিছু বিকাশের জন্য আমাকে মোছার পদ্ধতিটি প্রয়োগ করতে হয়েছিল। এটা খুব সহজ. আমি শর্তসাপেক্ষে মোছার জন্যও চেষ্টা করি তবে আমি সঠিক কোড পাইনি। তবে আমি নিম্নলিখিত কোডটি ব্যবহার করছি যা শর্তাধীন মোছার জন্য আপনার প্রয়োজনীয়তা পূরণ করবে।
$items = Mage::getModel('custom/csaabandonedcart')->getCollection()
->addFieldToFilter('csa_id',Mage::getSingleton('customer/session')
->getCustomerId())->addFieldToFilter('customer_id', $retailer)
->addFieldToFilter('product_id', $spid);
foreach ($items as $item) {
$item->delete();
}