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て実行できることはわかっていますが、アプリケーションには何千ものクエリがあるため、コードが読みにくくなるだけです。
ゴール
上記の目的は、ユーザーが過去のどこにいても、アプリケーションの状態をそのまま確認できるようにすることです。同じ目標を達成できる別のアプローチを知っているなら、それも素晴らしいでしょう。
お時間をいただきありがとうございます!