【问题标题】:Get category collection with like query in Magento在 Magento 中使用类似查询获取类别集合
【发布时间】:2013-05-05 19:53:09
【问题描述】:

我想在自动建议字段中显示所有类别列表。所以我有一个类似查询的代码:

function res($cur_category){
        $children_categories = Mage::getModel('catalog/category')->getCategories($cur_category->getId());
    $children_categories->addAttributeToFilter('name', array('like' => '%a%'));  
        foreach($children_categories as $child){
             $name = $child->getName();
        $option.='<li onClick="fill(\''.addslashes($child->getName()).'\');">' .$child->getName(). "</li>";
        $option.=res($child);
        }
    unset($children_categories);
        return $option;
}

function GetTree(){
    $rootcatId= Mage::app()->getStore()->getRootCategoryId();
    $categories = Mage::getModel('catalog/category')->getCategories($rootcatId);
    $categories->addAttributeToFilter('name', array('like' => '%a%')); 
    foreach($categories as $category) 
    {   
        $option.='<li onClick="fill(\''.addslashes($category->getName()).'\');">'.$category->getName()."</li>";
        if($category->hasChildren()){
        $option.= res($category);
        }
    }
    unset($categories);
    return $option;
} 
echo $select = '<ul>'.GetTree().'</ul>';

但是此代码不适用于类似查询,如果没有类似查询,它可以正常工作并正确显示类别列表。如何使用like 编写查询?

【问题讨论】:

    标签: php magento magento-1.7 magento-1.6


    【解决方案1】:

    这可能是由于使用了“addAttributeToFilter”方法,或者使用“getCategories”来定义集合......我最好的建议是改变你拉取集合的方式。我没有在函数中测试过这个,它一直是一个直接的 .phtml 文件,但我总是使用以下结构来拉取一个集合(修改以适应你的变量):

    $children_categories = Mage::getModel('catalog/category')->getCollection()
                    ->addAttributeToSelect('*')
                    ->addFieldToFilter('parent_id',array('eq' => $cur_category->getId()))
                    ->addFieldToFilter('name', array('like' => '%a%'))
                    ->addFieldToFilter('include_in_menu',array('eq' => '1'))
                    ->addFieldToFilter('is_active', array('eq' => '1'))
                    ->addAttributeToSort('position', 'asc');
    

    在您的情况下,最后三种方法是可选的,但我会在此处为那些希望仅保留可见类别以在菜单中使用并按类别树排序的用户提供它们。

    对于 GetTree() 方法:

    $categories = Mage::getModel('catalog/category')->getCollection()
                    ->addAttributeToSelect('*')
                    ->addFieldToFilter('parent_id',array('eq' => $rootcatId))
                    ->addFieldToFilter('name', array('like' => '%a%'))
                    ->addFieldToFilter('include_in_menu',array('eq' => '1'))
                    ->addFieldToFilter('is_active', array('eq' => '1'))
                    ->addAttributeToSort('position', 'asc');
    

    如果这有帮助,或者您仍然遇到问题,请告诉我。

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 2013-09-02
      相关资源
      最近更新 更多