1

我有一个starmall_config_shop带有列的自定义表idname.

shop_id我在产品表中添加了自定义属性。

我想namestarmall_config_shop

当我做

$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') ---> 不起作用

4

2 回答 2

0

问题是

'id=shop_id'. 

尝试使用

"entity_id=shop_id" 

如果 shop_id 它是表 at_shop_name 中的一个字段。

于 2012-12-18T14:19:15.807 回答
0

在 system.log 我看到:

可恢复的错误:Mage_Catalog_Model_Resource_Product_Collection 类的对象无法转换为字符串

我搜索了一下,发现还有第二个参数:

addAttributeToSelect($attribute, $joinType=false)

当我现在使用它时它可以工作:

addAttributeToSelect('shop_id', 'left');

然后生成的查询是:

SELECT e.*, at_shop_id.value AS shop_id, at_shop_name.name AS shop_name
FROM catalog_product_entity AS e
LEFT JOIN catalog_product_entity_int 
    AS at_shop_id 
   ON (at_shop_id.entity_id = e.entity_id) 
  AND (at_shop_id.attribute_id = 973) 
  AND (at_shop_id.store_id = 0)
LEFT JOIN starmall_config_shop 
    AS at_shop_name 
   ON (at_shop_name.id=at_shop_id.value)

但是我还是不知道为什么??

于 2012-12-18T21:37:28.547 回答