2011-05-13 84 views
0

嗨,我有一個magento網站,使用類別作爲giftlists爲人。每個類別都有一個list_holder_1和list_holder_2屬性。Magento addAttributeToFilter問題

我創建了一個表單,用戶可以使用每個屬性的文本框搜索giflists(類別)。

我使用getModell..getCollection()方法與addAttributeToFilter與類似的原因,但我得到奇怪的結果。

這裏是我的代碼..

<?php $list_holder_1 = $_POST['list_holder_1']; ?> 
<?php $list_holder_2 = $_POST['list_holder_2']; ?> 
<?php $_collection = Mage::getModel('catalog/category')->getCollection(); 
$_collection->addAttributeToSelect('*'); 
$_collection->addAttributeToFilter(
      array(
       array('attribute'=>'list_holder_1', 'like'=>'%'.$list_holder_1.'%'), 
       array('attribute'=>'list_holder_1', 'like'=>'%'.$list_holder_2.'%'), 
      )); 
$_collection->addAttributeToFilter(
      array(
       array('attribute'=>'list_holder_2', 'like'=>'%'.$list_holder_1.'%'), 
       array('attribute'=>'list_holder_2', 'like'=>'%'.$list_holder_2.'%'), 
      )); 
echo $_collection->getSelect(); 
?> 

用戶應該能夠搜索位於文本框每個名字。所以我的查詢結束了這樣的where子句:

我只加一個名字是一個盒子 - 「山」

WHERE (e.entity_type_id = '3') AND ((_table_list_holder_1.value like '%Hill%') OR (_table_list_holder_1.value like '%%')) AND ((_table_list_holder_2.value like '%Hill%') OR (_table_list_holder_2.value like '%%')) 

正如你可以看到它的檢查在這兩個領域的一個空白值。由於某種原因,它正在拉出所有類別。儘管只有1人擁有'Hill'的list_holder_1值。

任何任何線索,我哪裏出了問題?

問候, 比利

回答

2

%是一個通配符所以'%%'是匹配的所有值。如果要匹配確切值,請不要使用like%,而應使用eq