أواجه مشكلة في الانضمام إلى جدول العملاء إلى جدول شبكة المبيعات
-
12-12-2019 - |
سؤال
يريد العميل أن يتم عرض جزء معين من البيانات من جدول العملاء بدلا من الاسم الأخير للعميل في شبكة أمر المبيعات.أحاول الانضمام إلى جدول العملاء إلى جدول شبكة المبيعات ، لكنني واجهت مشكلات.تمكنت من الانضمام بنجاح إلى جدول الدفع الخاص بالمبيعات إلى جدول الشبكة الخاص بالمبيعات لعرض رقم أمر الشراء في الشبكة;يفترض بسبب الطبيعة المماثلة للجداول.وهنا الانضمام حاولت في البداية من Mage_Adminhtml_Block_Sales_Order_Grid
صف دراسي.ونعم ، وأنا أعلم عدم تعديل الملفات الأساسية.أردت فقط التأكد من أن الكود كان صحيحا قبل تمديد الإطار.:)
protected function _prepareCollection()
{
$collection = Mage::getResourceModel($this->_getCollectionClass());
$resource = Mage::getSingleton('core/resource');
$collection->getSelect()->join('customer_entity_varchar', 'main_table.customer_id = customer_entity_varchar.entity_id', array('value'));
$this->setCollection($collection);
return parent::_prepareCollection();
}
المحلول
افترض السمة code of PO Number is po_number
تحتاج إلى الحصول على تفاصيل السمة باستخدام
Mage::getResourceModel('customer/customer') Model by attribute code .
إذا كان رمز السمة الخاص بك عبارة عن مخزن ، فيمكنك الحصول على اسم جدول السمة والسمة باستخدام الرمز أدناه.
$po_number = Mage::getResourceModel('customer/customer')->getAttribute('po_number');
$tablename=$po_number->getBackend()->getTable();
$الجدول تم اتخاذها من قبل static.it يمكن أن تأخذ ديناميكية من قبل رمز أعلاه
$attributeId=$po_number>getAttributeId()
كما customer_entity_varchar
يحتوي الجدول على lots of records
مع different attribute so you need to put attribute id in join query condition
.
$collection = Mage::getResourceModel($this->_getCollectionClass());
$collection>getSelect()->joinLeft(
array('ccp' =>$po_number->getBackend()->getTable()),
'ccp.entity_id = main_table.customer_id
AND ccp.attribute_id = '.(int) $po_number->getAttributeId() . '
',
array('$po_number-'=>'value'));