DoctrineでSymfony2を使用しています。私はたくさんのエンティティ(テーブル)を持っています、そしてこれが私が達成しようとしていることです:
問題
たとえばfrom_date
、すべてのエンティティには2つのフィールド(列)が必要to_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_date
れているはずです。to_date
ここで、データベースからすべての製品をフェッチしようとしているとしましょう。私はそうするでしょう:
$products = $this->getDoctrine()->getRepository('SomeRandomBundle:Product')->findAll();
これは通常、データベースからすべての製品をフェッチします。私がやりたいのは、from_date
<= some_date
<=である製品のみをフェッチすることto_date
です。getSomeDate()
の値を取得するために、Doctrineが呼び出す必要のある関数がありますsome_date
。DQLで記述されたカスタムクエリでも機能するはずです。
$products = $this->getDoctrine()->getRepository('SomeRandomBundle:Product')->findByPrice(20);
ただし、findメソッドまたはカスタムDQLクエリを使用してPKでエンティティをフェッチしようとする場合には影響しません。
追加の詳細
上記の規則に従わないエンティティもいくつかあります。
+すべてのエンティティでチェックを作成from_date
しto_date
て実行できることはわかっていますが、アプリケーションには何千ものクエリがあるため、コードが読みにくくなるだけです。
ゴール
上記の目的は、ユーザーが過去のどこにいても、アプリケーションの状態をそのまま確認できるようにすることです。同じ目標を達成できる別のアプローチを知っているなら、それも素晴らしいでしょう。
お時間をいただきありがとうございます!