使用magento命令连接自定义表

ton*_*9uk 1 magento jointable

我一直在尝试使用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');
Run Code Online (Sandbox Code Playgroud)

在此之后为模板我试图加入我的表连接在一起,但只返回错误,如incorrect table nametable doesn't exist或其他一些错误.

只是为了清理事情,有人可以根据我的理解纠正我

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

获取模型的实例.在该模型中是保存所需数据的表(对于此示例,我将调用表p)

$collection->getSelect()

从表p中选择数据

->join()

需要三个参数才能将两个表连接在一起

PARAM1

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

'您为表提供的名称'=>'要添加到集合中的表(已在模型文件夹中设置)'

PARAM2

'main_table.foreign_id = table_alias.primary_key'

这一点我没有得到(虽然看起来很直接)

我的主表(p)没有外来ID(它有它的主键 - 它也是它的外来ID)?

必须等于你在param1中给出的字母名称

参数3

'main_table.foreign_id = table_alias.primary_key'

从所有名称中获取所有内容

我的理解在哪里出错了?

小智 11

请看下面的sql join语句,我在我的项目中使用它并且它工作正常.

句法

$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'));
Run Code Online (Sandbox Code Playgroud)

工作查询示例

$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'));
Run Code Online (Sandbox Code Playgroud)

希望这对你有用!!