【发布时间】:2015-01-27 09:42:51
【问题描述】:
我有一个自定义表 starmall_config_shop,其中包含 id 和 name 列。
我在产品表中添加了自定义属性shop_id。
我想从starmall_config_shop得到name
当我这样做时
$rs = Mage::getModel('catalog/product')
->getCollection()
->addAttributeToSelect('shop_id');
$rs->joinField('shop_name','starmall_config/shop','name','id=shop_id'
,NULL,'left');
我得到了错误
Unknown column 'at_shop_id.value' in 'on clause'
$rs->printlogquery(true) 给出:
SELECT `e`.*, `at_shop_name`.`name` AS `shop_name` FROM `catalog_product_entity` AS `e`
LEFT JOIN `starmall_config_shop` AS `at_shop_name` ON (at_shop_name.`id`=at_shop_id.value)
我发现我可能缺少对属性表的连接。
at_shop_id.value 来自哪里?
如何获取查询中的name 列?
====================
目前的工作解决方案是使用:
->addAttributeToSelect('shop_id', 'left') ---> 有效
->addAttributeToSelect('shop_id') ---> 不起作用
【问题讨论】:
-
乍一看,您的代码对我来说似乎没问题,您正在清除尝试加入 shop_id 属性,但它不在您的 sql 中。如果有什么我猜你启用了平面目录并需要重新索引,或者你的缓存清除。
-
刚刚检查过,但未启用配置平面目录。为了开发,我禁用了缓存。确保删除缓存文件夹,但查询仍然失败。是的,它不在 sql 中,我想我需要找出如何将自定义产品属性
shop_id放入查询中。 -
可能是一个愚蠢的问题,但你确定你删除了正确的缓存目录。使用 Magento 时我的第一个问题是我忘记让 var 目录可写,它会在 /tmp/ 中创建缓存。
-
检查我删除了完整的 /var 文件夹。它是自动重新创建的,其中包含子文件夹和文件。
标签: magento magento-1.7