ডাটাবেস থেকে কাস্টম EAV বৈশিষ্ট্য মুছুন


28

আমি আমার স্টোরে লাইভ স্থানান্তরিত করার আগে সরাসরি ডেটাবেস থেকে অব্যবহৃত EAV বৈশিষ্ট্যগুলি সরাতে চাই। eav_attributeটেবিলের মধ্যে বৈশিষ্ট্যগুলি পাওয়া যায় , আমি কি এই টেবিল থেকে বৈশিষ্ট্যগুলি মুছতে পারি? এটি নিরাপদ? অথবা আমার অন্যান্য ইএভি টেবিলগুলিও সম্পাদনা করতে হবে?

উত্তর:


39

দেখুন Mage_Eav_Model_Entity_Setup::removeAttribute()। এটি দুটি আর্গুমেন্ট লাগে - প্রথমটি হ'ল সত্তা কোড, এবং দ্বিতীয়টি বৈশিষ্ট্য কোড।

সম্পাদনা করুন - ইনস্টলেশন-বিহীন সুযোগ থেকে চালানোর জন্য:

<?php
include 'app/Mage.php';
Mage::app();
$setup = Mage::getResourceModel('catalog/setup','catalog_setup');
$setup->removeAttribute('catalog_product','attr_code');

1
ধন্যবাদ. আমি বুঝতে পারি যে এটি কোনও মডিউলের সেটআপ স্ক্রিপ্টে কীভাবে ব্যবহার করবেন: $installer->removeAttribute('catalog_product', 'my_attribute1');বা $installer->removeAttribute('catalog_category', 'my_attribute2'); আলাদা কোডটিতে এই কোডটি ব্যবহার করার উপায় আছে কি? আমি রুট ফোল্ডারে ফাইল স্থাপন করতে (যেখানে Magento এর চাই index.php), যাতে এটি সম্ভব হবে ওয়েব ব্রাউজারে স্ক্রিপ্ট কল করতে: example.com/delete_attributes.php/। তুমি কি আমাকে সঠিক দিকনির্দেশনা দিবে?
জিটিক্স

আমার প্রতিক্রিয়া আপডেট।
benmark

একটি কাস্টম গ্রাহক বৈশিষ্ট্য মুছতে আমাকে কী কোড পরিবর্তন করতে হবে?
শশী কাঁথ

1
@shasikanth - এটি সত্যিই একটি পৃথক প্রশ্ন, কিন্তু swap 'র catalog/setupসঙ্গে customer/setup, catalog_setupসঙ্গে customer_setup, এবং catalog_productসঙ্গে customer
বেনমার্কস

12

ম্যাজেন্টোর প্রথম নিয়মটি হ'ল: সরাসরি ডেটাবেস সম্পাদনা করবেন না।
আমি স্বীকার করি যে আমি বহুবার এই নিয়মটি ভঙ্গ করেছি, সুতরাং ...
আপনি বৈশিষ্ট্যগুলি মুছতে পারেন eav_attribute, সীমাবদ্ধতার সাথে ON DELETE CASCADEবাকী টেবিলগুলি পরিষ্কার করা উচিত।
তবে আমি এখনও মনে করি আপনার পরিষ্কার উপায় নেওয়া উচিত:

$attributeId = 55;
Mage::getModel('catalog/resource_eav_attribute')->load($attributeId)->delete();

এটি বেশি সময় নিবে না এবং আপনি নিজের সাথে শান্তি বোধ করবেন কারণ আপনি নিয়ম ভঙ্গ করেন নি।
আপনি কোন পদ্ধতিটি চয়ন করছেন তা গুরুত্বপূর্ণ নয়, তবে উভয় ক্ষেত্রেই আপনার ডিবিকে সমর্থন দেওয়া।


3
আমি সবসময় চেষ্টা করি ডেটাবেস সম্পাদনা এড়ানোর জন্য, তবে এটি এটি করা থেকে দ্রুত হয় :) এবং এবার এটি কেবল পরীক্ষার জন্য (উত্পাদন সাইটের জন্য নয়)। বৈশিষ্ট্যটি থেকে মুক্তি পাওয়ার জন্য এই প্রশ্নটি কি যথেষ্ট, বা আমার আরও কিছু করা দরকার:DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "my_attribute";
জুলাইট

এটি দীর্ঘ হতে হবে। বিভিন্ন সত্তার জন্য কেবল একই কোডের সাথে 2 টি অ্যাট্রিবিউট নেই তা নিশ্চিত করুন।
মারিউস

3

DELETE FROM eav_attribute WHERE eav_attribute.attribute_code = "some_attr_code";

এটি একটি কার্যক্ষম সমাধান, আমি এটি বহুবার ব্যবহার করেছি।

বিশেষত যদি আপনি এক্সটেনশানটি সরিয়ে থাকেন এবং ম্যাজেন্টো এখনও অ্যাসিস্টিং অ্যাট্রিবিউট মডেলটিকে কল করতে চান

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