2016-06-01 5 views
0

代理店はPimcoreのブログ展開用のフィルタリングコントロールを構築しており、特定のYYYY-MMの組み合わせで投稿をフィルタリングしようとしています。著者オブジェクトとサブジェクトオブジェクトのフィルタリングがあります。ここでPimcore:指定された年と月に一致するDateTimeオブジェクトを持つオブジェクトを一覧表示する

$this->getParam('archive')2016-06の線に沿って何かに等しい

// Pagination page... 
$page = (int)$this->getParam("page") < 1 ? 1 : (int)$this->getParam("page"); 

// Results per page... 
$rpp = (int)$this->document->getProperty('resultsPerPage') < 1 ? 1 : (int)$this->document->getProperty('resultsPerPage'); 

// Return list of posts... 
$list = new Object\BlogArticle\Listing(); 

// Apply author filter... 
if($this->getParam('filter-by') == 'author') { 
    $list->setCondition('author LIKE ?', "%,".(int)$this->getParam('author').",%"); 
} 

// Apply category filter... 
if($this->getParam('filter-by') == 'category') { 
    $list->setCondition('categories LIKE ?', "%,".(int)$this->getParam('category').",%"); 
} 

// This isn't working! 
if($this->getParam('filter-by') == 'archive') { 
    $list->setCondition("DATE_FORMAT(FROM_UNIXTIME(date), '%Y-%m') = ".$list->quote($this->getParam('archive'))); 
} 

// Order by date... 
$list->setOrderKey("date"); 
$list->setOrder($this->document->getProperty('resultsSort') == 'asc' ? 'asc' : 'desc'); 

// Apply pagination values... 
$list->setLimit($rpp); 
$list->setOffset(($page - 1) * $rpp); 

// Do it! 
$this->view->blog = $list->getObjects(); 

...フィルタと戻ってポストを適用し、当社のコントローラ内のコードブロックです。 Zend DateTimeオブジェクトはdate列にバインドされています。

私はPimcoreのドキュメントを調べましたが、オブジェクトのDateTimeフィールドのクエリ方法については何も見つかりませんでした。

答えて

1

あなたのアプローチは完全に有効と思われ、うまくいくはずです。日付の関数名に間違いが1つしかありません。それはFROM_UNIXTIMEでなく、FROMUNIXTIMEでなければなりません。

+0

ああ、はい。私がその変更を行った今、機能しているようです。しかし、結果をページングし続けると、最終的にそのYYYY-MMコンボに属さない結果が得られます。これらの不一致の結果を厳密に比較して整理する方法はありますか? – RedYetiCo

+0

他のページもfilter-byパラメータを取得していることを確認してください。 –

+0

ああ、そうでした。私たちは、追加の投稿に対して遅延読み込みメソッドを実行していましたが、パラメータが渡されていませんでした。ありがとうもう一度イゴール! – RedYetiCo

関連する問題