объединение пользовательских таблиц с помощью команд magento

Я пытался присоединиться к двум пользовательским таблицам, используя команды magento. После поиска я наткнулся на этот блок общих код

$collection = Mage::getModel('module/model_name')->getCollection();
$collection->getSelect()->join( array('table_alias'=>$this->getTable('module/table_name')), 
'main_table.foreign_id = table_alias.primary_key',
 array('table_alias.*'), 
'schema_name_if_different');

Следуя этому шаблону, я попытался объединить свои таблицы, но вернул только такие ошибки, как incorrect table name или table doesn't exist, или какую-то другую ошибку.

Просто чтобы прояснить ситуацию, может кто-нибудь, пожалуйста, поправьте меня в моем понимании

$collection = Mage::getModel('module/model_name')->getCollection();

Получает экземпляр вашей модели. Внутри этой модели находится таблица, содержащая необходимые данные (для этого примера я назову таблицу p).

$collection->getSelect()

Выбрать данные из таблицы p

->join()

Требуется три параметра для объединения двух таблиц вместе

ПАРАМЕТРЫ1

array('table_alias'=>$this->getTable('module/table_name'))

'ализованное имя, которое вы даете таблице' => 'таблица, которую вы хотите добавить в коллекцию (это было настроено в папке модели)'

ПАРАМ2

'main_table.foreign_id = table_alias.primary_key'

Этот бит я не понимаю (хотя это кажется прямолинейным)

моя основная таблица (p) не имеет внешнего идентификатора (у нее есть первичный ключ - это также его внешний идентификатор)?

должно быть равно псевдониму, который вы указали в param1

ПАРАМЕТРЫ3

'main_table.foreign_id = table_alias.primary_key'

получить все от имени alised

Где я ошибся в своем понимании?


person tony09uk    schedule 15.10.2013    source источник


Ответы (1)


Пожалуйста, ознакомьтесь с приведенным ниже оператором соединения sql, я использую его в своем проекте, и он отлично работает.

Синтаксис

$collection = Mage::getModel('module/model_name')->getCollection();
$collection->getSelect()->join(Mage::getConfig()->getTablePrefix().'table_name_for_join', 'main_table.your_table_field ='.Mage::getConfig()->getTablePrefix().'table_name_for_join.join_table_field', array('field_name_you_want_to_fetch_from_db'));

Пример рабочего запроса

$collection = Mage::getModel('module/model_name')->getCollection();
$collection->getSelect()->join(Mage::getConfig()->getTablePrefix().'catalog_product_entity_varchar', 'main_table.products_id ='.Mage::getConfig()->getTablePrefix().'catalog_product_entity_varchar.entity_id', array('value'));

Надеюсь, это сработает для вас!

person Dharmesh Thanki    schedule 16.10.2013