2017-03-16 53 views
0

Symfony的2實體狀態參數的變化我有一個GameEvent實體當某些日期時間經過

參數之間有一個狀態這是一個小的int表示嗯......事件的狀態。

0 - 剛開始

1 - 發生

2 - 完成

我得在storred DateTime對象event_start_time 的GameEvent狀態應該改變從0到1的時候該日期通過event_start_time。我應該如何繼續這件事。

我想在稍後的查詢生成器中通過此狀態條目過濾實體。

除了使用cron命令搜索每隔5分鐘左右開始的匹配之外,是否有任何方法可以自動執行遊戲開始?

我該怎麼辦?

或者我應該只是由

  • 日期之前,現在(狀態0)

  • 日期濾除GameEvents現在之後,但可以說關閉 ==假

  • 日期之後但已關閉 == true

我歡迎任何想法,因爲我不知道該怎麼尋找

回答

0

你不應該有一個二次映射在實體領域,做那些:即假設字段的值應該隨着時間而改變,這應該向你建議,這不是你想要存儲在數據庫中的東西。

也許你可以有一個幫手方法,如isStarted(): boolisFinished(),沒有別的。

如果你想使用QueryBuilder特定的狀態進行篩選的話,我會建議您庫中創建一個特定的方法,像這樣:

class GameEventRepository extends BaseRepository 
{ 
    public function findAllInProgress() 
    { 
     $qb = $this->createQueryBuilder('e'); 
     $qb->andWhere('e.event_start_time <= :now'); 
     $qb->setParameter('now', new \DateTime()); 
     $qb->andWhere('e.closed = 0'); 

     return $qb->getQuery()->getResult(); 
    } 
} 
相關問題