Magento:具有多个参数的资源模型'loadByAttribute'

时间:2014-01-09 15:14:38

标签: magento search advanced-search

我需要一种方法来定位Magento对象我的多个属性。我可以使用'loadByAttribute'方法通过单个参数查找对象,如下所示。

$mageObj->loadByAttribute('name', 'Test Category');

但是,我无法让它适用于多个参数。例如,我希望能够使用以下所有搜索参数进行上述查询。它看起来可能如下所示。

$mageObj->loadByAttribute(array('entity_id' => 128,
                                'parent_id' => 1,
                                'name' => 'Test Category'));

是的,我知道您不需要所有这些字段来查找单个类别记录。但是,我正在编写一个模块来导出和导入整个网站,我需要在创建之前测试目标系统上是否已存在某个对象(如类别)。为此,我必须检查是否已存在具有多个匹配属性的相同类型的对象,即使它的ID不同。

1 个答案:

答案 0 :(得分:2)

这可能无法解答您的问题,但可能会解决您的问题 Magento不支持loadByAttribute多个属性,但您可以这样做。

$collection = $mageObj->getCollection()
    ->addAttributeToFilter('entity_id', 128)
    ->addAttributeToFilter('parent_id', 1)
    ->addAttributeToFilter('name', 'Test Category');
$item = $collection->getFirstItem();
if ($item->getId()){
    //the item exists
}
else {
    //the item does not exist
}

addAttributeToFilter适用于EAV实体(产品,类别,客户)。 对于扁平实体,请使用addFieldToFilter 销售实体(订单,发票,信用证和货件)有一个特殊情况,可以同时使用它们。