使用magento命令连接自定义表

时间:2013-10-15 12:31:04

标签: magento jointable

我一直在尝试使用magento的命令加入两个自定义表。搜索后我遇到了this block of generic code

$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 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'

从名字

中获取所有内容

我的理解在哪里出错了?

1 个答案:

答案 0 :(得分: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'));

工作查询示例

$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'));

希望这对你有用!!