magento中的joinAttribute joinField

2011-10-31 10:44:00

 

通常我们使用Mage::getModel('catalog/product')->getCollection()能够获取到产品集。

在这个产品集中,只包含了table  catalog_product_entity 中的字段,但是很多时候我们都需要更多的字段,比如产品price,qty等;

一般情况下,我们会这样做:

  1. $collection = Mage::getModel('catalog/product')->getCollection();
  2. $collection->addAttributeToSelect('filedname');//通过验证,此处添加这一行不起作用
  3. foreach($collection->getAllIds() as $id){
  4.     $prod= Mage::getModel('catalog/product')->load($id)->getData();//此时的prod包含了EAV模型中的所有属性
  5. }

实际上,上面虽然能获取产品的所有属性,但是在你的product有上万条的时候,就会严重影响性能了。或许你会说用下边的code也可以:

  1. $collection->addExpressionFieldToSelect('filedname', "{{filedname}}", array('filedname' => 'filedname'));
  2. $collection->getSelect()->joinLeft('tablename','e.entity_id=`tablename`.entity_id','');

不错,虽然可以得到你想要的属性,但是这仅仅限于系统属性,如qty,因为我们知道qty是存储于中的,但是

magento中又很多自定义属性,是采用EAV模型存储的,所以上面的方法也不可行了。

还好有 joinAttribute  joinField这两个function解决了上面的问题。

比如我想将name添加到collection中

  1. $collection->joinAttribute('name','catalog_product/name', 'entity_id', 'entity_id','left', 0);

就可以了,将qty添加到collection中

  1. $collection->joinField('qty', 'cataloginventory/stock_item','qty','product_id=entity_id', '{{table}}.stock_id=1','left');

就可以了。

joinAttribute  用来添加EAV模型中的Attribute  ,只要在table 中能找到的attribute_code都可以在这里使用!

点赞
  1. AllInAce说道:
    Google Chrome Windows 10
    https://t.me/s/Gizbo_officials
  2. AllInAce说道:
    Google Chrome Windows 10
    https://t.me/s/kazino_s_minimalnym_depozitom/15
  3. RoyalFlusher说道:
    Google Chrome Windows 10
    В мире азарта, где каждый сайт стремится привлечь обещаниями простых выигрышей, рейтинг интернет казино на деньги становится как раз той картой, что ведет мимо заросли подвохов. Для профи и новичков, что устал от ложных посулов, он инструмент, дабы увидеть реальную выплату, будто ощущение выигрышной фишки у руке. Без лишней болтовни, только проверенные сайты, где выигрыш не лишь цифра, а реальная везение.Подобрано на основе поисковых запросов, будто ловушка, что ловит топовые горячие тенденции на рунете. Тут отсутствует места для стандартных фишек, каждый пункт будто ход на покере, там обман раскрывается немедленно. Игроки видят: по России манера письма с подтекстом, в котором юмор скрывается словно совет, помогает избежать ловушек.На www.don8play.ru этот рейтинг лежит словно раскрытая раздача, готовый к раздаче. Загляни, если хочешь почувствовать ритм реальной игры, без мифов плюс неудач. Тем тех ценит ощущение удачи, он будто держать ставку у руках, минуя глядеть на монитор.

发表回复

电子邮件地址不会被公开。必填项已用 * 标注