2015-01-02 46 views
0

我有數量的博客文章在我的數據庫和即時通訊使用學說標準來過濾它們。如果我寫出符合某些帖子的標準,那麼一切都很完美。如何判斷使用原則標準沒有結果匹配?

想像一下,有3個用戶(用戶1,用戶2,用戶3)和有標記爲私人從用戶1和用戶一些接線柱2

這是我的PHP代碼:

$criteria = Criteria::create(); 
$criteria->Where($criteria->expr()->eq('private', 1); 
$criteria->andWhere($criteria->expr()->eq('author', $author)); 
$posts=$service->findPostBy($criteria); 

return array(
      'page' => $page, 
      'posts'=>$posts, 
      'filter' => $form->createView() 
      ); 

/*findPostBy calls Doctrine matching function*/ 
public function matching(Criteria $criteria) 
    { 
     $persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName); 

     return new ArrayCollection($persister->loadCriteria($criteria)); 
    } 

如果我要求用戶1的私人帖子,它會建立功能查詢並返回我想要的帖子。但是,如果我要求用戶3私人帖子它沒有任何過濾返回我的數據庫中的所有帖子。如果我的標準在沒有匹配的情況下不返回空結果,我該如何判斷我的標準是否有效。

+0

symfony的探查應該告訴你,正在運行的確切數據庫查詢,你可以在那裏檢查他們 –

+0

這是事實,但我要告訴用戶根據他的過濾器沒有帖子。我需要一些可以讓我告訴用戶的變量或者某些信息。 – kajacx

+0

當查詢返回0結果時,這不就是檢查嗎? –

回答

1

試試這個:

$criteria = Criteria::create() 
    ->where(Criteria::expr()->eq('private', 1); 
    ->andWhere(Criteria::expr()->eq('author', $author)); 

我不知道爲什麼你正在使用的標準首先爲您例如,雖然。你可以完全消除的標準和完成你在一行想要的東西:

$posts $service->findPostBy(array('private' => 1, 'author' => $author); 
+0

如何在此數組符號中模擬>和<運算符? – kajacx

+0

如果你的意思是大於或小於,你必須使用查詢生成器或DQL來處理這種情況。見http://doctrine-orm.readthedocs.org/en/latest/reference/working-with-objects.html#querying –

+0

你最終搞清楚@kajacx了嗎? –

相關問題