5

先月の商品、今月の商品、先週の商品、今週の商品など、2つの日付の間のすべての商品を取得する方法。

私はこれで試しました:

// current day to start with
$start = mktime(0,0,0,date('m'), date('d'), date('Y'));;

// calculate the first day of last month
$first = date('YYYY-MM-DD',mktime(0,0,0,date('m',$start) - 1,1,date('Y',$start)));

// calculate the last day of last month
$last = date('YYYY-MM-DD',mktime(0, 0, 0, date('m') -1 + 1, 0, date('Y',$start)));



   if($filter == "lastmonth"){

    $collection = Mage::getModel('catalog/product')->getCollection();
    $collection->addAttributeToFilter('updated_at', array('gteq' =>$first));
    $collection->addAttributeToFilter('updated_at', array('lteq' => $last));


}

しかし、私は結果を得ることができません:(何か助け?

ダニエルの応答後に変更されました!

4

4 に答える 4

17

1)まず、日付形式を「YYYY-MM-DD」から「Ymd」に変更する必要があります。これにより、magentoレコードが持つ日付形式が返されます。

2)あなたの例で以下に述べるように、日付には特別な条件があります。

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('updated_at', array('gteq' =>$first));
$collection->addAttributeToFilter('updated_at', array('lteq' => $last));

に。

$collection = Mage::getModel('catalog/product')->getCollection();
$collection->addAttributeToFilter('updated_at', array(
        'from' => $first,
        'to' => $last,
        'date' => true,
        ));
于 2013-09-12T13:59:08.997 に答える
10

私はあなたのコードを試しましたが、交換'lteq''gteq'て機能させる必要がありました。は小さい番号なので、その番号より大きい$fromdate日付を検索しています。

また、MySQLが好きなように日付をフォーマットすることを忘れないでください。date('Y-m-d')

PS。完全なリストについては、比較演算子を参照してください

于 2012-04-17T12:06:19.270 に答える
1

コードには1つの問題があります。

$collection->addFieldToFilter()

する必要があります:

$collection->addAttributeToFilter()
于 2012-04-16T12:46:18.783 に答える
1

質問は少し古いことは知っていますが、検索エンジンの結果で非常によくランク付けされているので、次のような引数として使用する方がよいdate()関数を修正します: Ymd H:i:s。お役に立てば幸いです。

于 2014-03-13T14:38:52.800 に答える