2012-11-13 28 views
0

我使用Symfony2與Doctrine。我有噸的實體(表),並在這裏就是我試圖完成:默認條件和列與Doctrine

問題

每個實體都需要有2個字段(列),例如from_dateto_date默認。 假設我有在product.orm.yml文件中定義了以下實體:

Some\Random\Namespace\Product: 
    type: entity 
    table: product 
    id: 
     id: 
      type: integer 
      generator: 
       strategy: AUTO 
    fields: 
     name: 
      type: string 
      length: 255 
     description: 
      type: text 
     price: 
      type: float 

我會跑doctrine:schema:update後所創建的表應該已經有from_dateto_date列。 現在,可以說我正試圖從數據庫中獲取所有產品。我會這樣做:

$products = $this->getDoctrine()->getRepository('SomeRandomBundle:Product')->findAll(); 

這通常會從數據庫中獲取所有產品。我想這樣做,是爲了只獲取產品,其中from_date < = some_date < = to_date。將有一個功能getSomeDate(),該原則將不得不按順序調用,以獲得值some_date。 不,它也應該寫在DQL或者自定義查詢工作,我做這樣的事情

$products = $this->getDoctrine()->getRepository('SomeRandomBundle:Product')->findByPrice(20); 

但是,它不應該影響情況下,當我嘗試它使用find方法PK來獲取實體或自定義DQL查詢。

額外的細節

,也將一些實體,這將不遵循上述規則。

我知道我可以在每個實體中創建from_dateto_date +執行檢查,但是由於應用程序中會有成千上萬的查詢,它只會使代碼變得不可讀。

目標

上述的目標是讓用戶看到了應用程序的狀態,因爲它是,在過去的任何地方。如果你知道一種可以實現相同目標的不同方法,它也會很棒。

謝謝你的時間!

回答

1
  1. 自定義字段添加到您的所有實體u能

  2. 要當一個額外的檢查獲取數據也可以設置custom repository類,其中findAll/findBy使用自定義DQL並附加檢查

  3. 要添加額外的檢查,當執行DQL查詢,您可以指定DQL custom walkers

+0

這看起來不錯。我還不知道的唯一事情是如何爲所有實體擴展存儲庫類?順便說一句,對於遲到的回覆感到抱歉。我的筆記本電腦壞了,所以必須換新的。 –