2013-09-13 5 views
-1

Привет, я пытаюсь загрузить коллекцию продуктов на основе даты выпуска.Загрузить товар на основе номера недели

У меня есть дата в атрибуте для всех продуктов, и я хочу показать эти продукты, у которых есть дата выпуска на текущей неделе. Вот что я получил до сих пор

$_productCollection = Mage::getResourceModel('catalog/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('film_format', 7) 
    ->addAttributeToFilter('film_releasedatum', array('eq' => date("o-W", strtotime("W")))) 
    ->addAttributeToFilter('attribute_set_id', 14) 
    ->setOrder('film_releasedatum','DESC') 
    ->load(); 

Я надеюсь, что кто-то может поделиться некоторый свет на этот

+0

Вы забыли сообщить нам, с какими проблемами вы столкнулись. Кроме того, было бы полезно, если бы вы опубликовали некоторые действительные значения образца вашего поля 'film_releasedatum'. Согласно «o-W» это должно быть s/t like «2013-42», но только вы знаете, какие данные этот атрибут действительно содержит. –

ответ

1

здесь я могу дать вам альтернативный атрибут фильтра, который будет уверен, что работать для вас

создать старт и дата окончания текущей недели

$date = time(); // Change to whatever date you need 
$dotw = $dotw = date('w', $date); 
$end = ($dotw == 5 /* Friday */) ? $date : strtotime('next Friday', $date); 
$start = $end - (6 * 24*60*60); 
$start = date('Y-m-d',$start); 
$end = date('Y-m-d',$end); 

Добавить ниже два фильтра в вашей коллекции

$collection->addAttributeToFilter('film_releasedatum', array('gteq' =>$start)); 
    $collection->addAttributeToFilter('film_releasedatum', array('lteq' => $end)); 

окончательный фильтр будет выглядеть

$_productCollection = Mage::getResourceModel('catalog/product_collection') 
    ->addAttributeToSelect('*') 
    ->addAttributeToFilter('film_format', 7) 
    ->addAttributeToFilter('film_releasedatum', array('gteq' =>$start)) 
    ->addAttributeToFilter('film_releasedatum', array('lteq' =>$end)) 
    ->addAttributeToFilter('attribute_set_id', 14) 
    ->setOrder('film_releasedatum','DESC') 
    ->load(); 

надеюсь, что это будет уверен, что поможет вам.

+0

@Martin Alderlöf, рад помочь вам. – liyakat

2

Существует специальное условие для даты, чтобы выбрать запись. Пожалуйста, попробуйте изменить это.

$_productCollection = Mage::getResourceModel('catalog/product_collection') 
->addAttributeToSelect('*') 
->addAttributeToFilter('film_format', 7) 
->addAttributeToFilter('film_releasedatum', array('gteq' =>$start)) 
->addAttributeToFilter('film_releasedatum', array('lteq' =>$end)) 
->addAttributeToFilter('attribute_set_id', 14) 
->setOrder('film_releasedatum','DESC') 
->load(); 

To.

$_productCollection = Mage::getResourceModel('catalog/product_collection') 
->addAttributeToSelect('*') 
->addAttributeToFilter('film_format', 7) 
->addAttributeToFilter('film_releasedatum', array(
    'from' => $first, 
    'to' => $end, 
    'date' => true, 
    )) 
->addAttributeToFilter('attribute_set_id', 14) 
->setOrder('film_releasedatum','DESC') 
->load(); 
+0

PLS не добавляет больше условий для каждого атрибута, а также, пожалуйста, найдите способ сделать все возможное и не кража любую идею из другого ответа. – liyakat

Смежные вопросы