我需要一种方法来定位Magento对象我的多个属性。我可以使用'loadByAttribute'方法通过单个参数查找对象,如下所示。
$mageObj->loadByAttribute('name', 'Test Category');
但是,我无法让它适用于多个参数。例如,我希望能够使用以下所有搜索参数进行上述查询。它看起来可能如下所示。
$mageObj->loadByAttribute(array('entity_id' => 128,
'parent_id' => 1,
'name' => 'Test Category'));
是的,我知道您不需要所有这些字段来查找单个类别记录。但是,我正在编写一个模块来导出和导入整个网站,我需要在创建之前测试目标系统上是否已存在某个对象(如类别)。为此,我必须检查是否已存在具有多个匹配属性的相同类型的对象,即使它的ID不同。
答案 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
销售实体(订单,发票,信用证和货件)有一个特殊情况,可以同时使用它们。