ম্যাজেন্টো ১.৯.২.০: টেবিল "বিক্রয়_ফ্ল্যাট_র্ডার_গ্রিড" গ্রাহকের নাম মানের অতিরিক্ত স্থান রয়েছে


19

অ্যাডমিন প্যানেলে, যখন আমি গ্রাহকদের নামের উপর ভিত্তি করে অর্ডারগুলি অনুসন্ধান করতে চাই, আমাকে প্রথম নাম এবং শেষ নামের মধ্যে 2 টি স্পেস যুক্ত করতে হবে। আমি যখন ইন্সপেক্ট এলিমেন্ট উইন্ডোটিতে মানটি দেখলাম তখন আমি লক্ষ্য করেছি যে মানটি একটি অতিরিক্ত স্থান সহ প্রদর্শিত হয়। আমি কীভাবে এটি ঠিক করতে পারি?


1
এখনও উপস্থিত রয়েছে 1.9.3.10
এসভি

উত্তর:


23

Magento 1.9.2 এ মধ্যম নামটি এই কলামটিতে যুক্ত করা হয়েছে:

উত্স: https://github.com/OpenMage/magento-mirror/blob/magento-1.9/app/code/core/Mage/Sales/Model/Resource/Order.php#L93-L99

    $ifnullFirst   = $adapter->getIfNullSql('{{table}}.firstname', $adapter->quote(''));
    $ifnullMiddle  = $adapter->getIfNullSql('{{table}}.middlename', $adapter->quote(''));
    $ifnullLast    = $adapter->getIfNullSql('{{table}}.lastname', $adapter->quote(''));
    $concatAddress = $adapter->getConcatSql(array(
        $ifnullFirst,
        $adapter->quote(' '),
        $ifnullMiddle,
        $adapter->quote(' '),
        $ifnullLast
    ));

দুর্ভাগ্যক্রমে তারা সেই ক্ষেত্রেটি সম্পর্কে সত্যই ভাবেনি যেখানে কোনও গ্রাহকের মধ্য নাম নেই। কোডটি দেখতে এমনভাবে দেখা উচিত :

    $ifnullFirst   = $adapter->getIfNullSql('{{table}}.firstname', $adapter->quote(''));
    $ifnullMiddle  = $adapter->getIfNullSql('{{table}}.middlename', $adapter->quote(''));
    $ifnullLast    = $adapter->getIfNullSql('{{table}}.lastname', $adapter->quote(''));
    $concatAddress = $adapter->getConcatSql(array(
        $ifnullFirst,
        $adapter->quote(' '),
        $ifnullMiddle,
        new Zend_Db_Expr('IF({{table}}.middlename IS NULL OR {{table}}.middlename="", "", " ")'),
        $ifnullLast
    ));

আপনি ফাইলটি অনুলিপি করতে পারেন app/code/local/Mage/Sales/Model/Resource/Order.phpএবং বর্ণিত হিসাবে এটি প্যাচ করতে পারেন ।

বিদ্যমান রেকর্ডগুলি ঠিক করতে, আপনি এই পিছু পিএইচপি স্ক্রিপ্টটি ব্যবহার করতে পারেন:

<?php
require 'app/Mage.php';
Mage::app();
Mage::getModel('sales/order')->getResource()->updateGridRecords(
    Mage::getResourceModel('sales/order_collection')->getAllIds()); 
echo 'done';

এটিকে fixordergrid.phpম্যাজেন্টো মূল ডিরেক্টরি হিসাবে স্থাপন করুন, কার্যকর করুন এবং মুছুন। এটি কিছু সময় নিতে পারে, তাই আপনার এটি ব্রাউজারে নয় কনসোল থেকে আরও ভালভাবে চালানো উচিত:

php fixordergrid.php

আহ, সম্ভবত, মাঝের নামটি তখন শূন্য স্ট্রিং ছিল এবং শূন্য নয়। আমি
এটিকেও প্রতিবিম্বিত

সদয় জবাবের জন্য ধন্যবাদ। এটি নতুন নিবন্ধিত গ্রাহকদের জন্য কাজ করে। পুরানো রেকর্ডগুলি কীভাবে, এটি ডিবি ক্যোয়ারির মাধ্যমে স্থির করা যায়?
জিনাত

আমি একবারের সাথে টেবিলটির পুনরায় গণনা করার জন্য জোর করে চেষ্টা করবMage::getModel('sales/order')->getResource()->updateGridRecords(Mage::getResourceModel('sales/order_collection')->getAllIds());
পুনঃ গণনার ফ্যাবিয়ান শেমংলার

নির্দেশাবলীর জন্য আপডেটটি দেখুন
ফ্যাবিয়ান শেমংলার

1
আমি ইস্যু ট্র্যাকারে এটি পাইনি, এখনই এটি রিপোর্ট করেছেন:
পাইনি

2

গৃহীত উত্তরটি আরও জানাতে, কোর ম্যাজেন্টো কোডটি সম্পাদনা না করা ভাল অনুশীলন তাই ফিক্সের সাথে পুনর্লিখন ব্যবহার করা আরও ভাল।

কনফিগ.এক্সএমএল এ

<global>
    <models>
        <sales_resource>
            <rewrite>
                <order>Yournamespace_Yourextension_Model_Sales_Order_Resource_Order</order>
            </rewrite>
        </sales_resource>
    </models>
</global>

3
গৃহীত উত্তরটি মূল ম্যাজেন্টো কোডটি সম্পাদনা করে না, @fschmengler একটি স্থানীয় কোড পুলের ওভাররাইডের প্রস্তাব দিচ্ছে। এই নির্দিষ্ট মডেলটি প্রায়শই মডিউল দ্বারা পুনরায় লেখা হয়, এবং তাই কোড পুল ওভাররাইড সম্ভবত আরও ভাল।
মাইকেল পার্কিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.