#magento #attributes
#magento #атрибуты
Вопрос:
У меня есть атрибут, определенный для продукта, который будет содержать список значений, разделенных запятыми. Идея, стоящая за этим, заключается в том, чтобы я мог сопоставлять этот продукт с другим продуктом.
псевдокод выглядел бы примерно так: найдите все продукты, у которых атрибут «cross_ref» имеет вид ‘34%’
Атрибут cross_ref будет содержать что-то вроде «1234 5678, abcd» и т.д. Я пробовал следующее, но он не возвращает никаких продуктов:
$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToSelect('*');
$collection->addFieldToFilter('cross_ref',array('like'=> '1234'));
//$collection->addAttributeToFilter('cross_ref',array('like'=> '1234')); // This didn't work either
foreach ($collection as $product) {
var_dump($product->getData());
}
Однако этот код ничего не возвращает.
Есть идеи, как я могу этого добиться?
Спасибо
Ответ №1:
Похоже, вы забыли знак%, чтобы соответствовать подразделу строки: 'like' => '34%'
.
Однако, если вы не хотите, чтобы 1234 совпадало с 12345, вы можете захотеть включить запятую в запрос, а также разрешить отсутствие запятых в начале или конце строки:
$collection->addFieldToFilter('cross_ref', array(
array('like'=> '%,1234,%'),
array('like'=> '1234,%'),
array('like'=> '%,1234'),
));
Комментарии:
1. Боже! Спасибо, что заметили это. Теперь все работает так, как ожидалось. Спасибо