Magento:如何以编程方式搜索客户集合

时间:2014-09-19 10:48:01

标签: magento magento-1.8

我正在尝试构建搜索脚本以从客户集合中检索条目。诀窍是正常的“OR”条件仅适用于第一个条目。

这是我到目前为止的代码:

$customers = Mage::getResourceModel('customer/customer_collection')
        ->addAttributeToSelect('*');

    if($_searchTerm = $this->getRequest()->getParam('q')){
        $customers->addAttributeToFilter(
            array(
                array('attribute' => 'firstname', 'like' => $_searchTerm),
                array('attribute' => 'lastname', 'like' => $_searchTerm),
                array('attribute' => 'email', 'like' => '%' . $_searchTerm . '%'),
                array('attribute' => 'phone', 'like' => '%' . $_searchTerm . '%'), /* valid field in my collection*/
            )
        );
    }

我也尝试使用通配符“%”,但仍然没有正确的结果。 我很可能在这里遗漏了一些东西。

感谢。

2 个答案:

答案 0 :(得分:1)

试试这个,它给我100%的工作

public function customerSearch($data) {
        $customerFactory = $this->_objectManager->get('\Magento\Customer\Model\CustomerFactory');
        $collection = $customerFactory->create()->getCollection()
                ->addAttributeToSelect("*")
                ->addAttributeToFilter('sponsor_id', array('eq' => $this->_customerSession->getCustomer()->getId()))
                ->addAttributeToFilter(
                        array(
                            array('attribute' => 'firstname', 'like' => '%' . $data . '%'),
                            array('attribute' => 'lastname', 'like' => '%' . $data . '%')
                        ))->load();
        $customer = $collection->getData();
        echo json_encode($customer);
        exit;
    }

其中Sponsor_id是我对客户的自定义属性,而$ data是简单的字符串,用于按名字或姓氏查找客户。希望这能解决您的问题。 谢谢

答案 1 :(得分:0)

这次我的愚蠢超过了我。我在我的查询中使用了另一个属性,Magento在过滤时遇到了一些问题,这是一个用模块创建的自定义属性。谢谢@clockworkgeek支持我。