我一直在尝试使用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 name或table 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)
希望这对你有用!!
| 归档时间: |
|
| 查看次数: |
7730 次 |
| 最近记录: |