2 つの主キーid
とdate
. レコードを更新するのではなく、更新された情報を含む新しいレコードを挿入します。この新しいレコードも同じid
で、date
フィールドは NOW() です。製品表を使用して質問を説明します。
特定の日付で製品の詳細を要求できるようにしたい。したがって、DQL で次のサブクエリを使用すると、問題なく動作します。
WHERE p.date = (
SELECT MAX(pp.date)
FROM Entity\Product pp
WHERE pp.id = p.id
AND pp.date < :date
)
この製品テーブルには、カテゴリなどの参照テーブルがいくつかあります。このカテゴリ テーブルには、同じ主キーの組み合わせがid
あります。date
特定の日時に商品詳細とカテゴリー詳細をリクエストできるようにしたいです。したがって、上記のように DQL を次のように拡張しました。これも正常に機能します。
JOIN p.category c
WHERE p.date = (
SELECT MAX(pp.date)
FROM Entity\Product pp
WHERE pp.id = p.id
AND pp.date < :date
)
AND c.date = (
SELECT MAX(cc.date)
FROM Entity\ProductCategory cc
WHERE cc.id = c.id
AND cc.date < :date
)
ただし、ご覧のとおり、複数の参照テーブルがある場合は、同じ DQL をコピーする必要があります。これらのサブクエリを何らかの方法でエンティティに追加して、エンティティが呼び出されるたびにこのサブクエリを追加したいと考えています。
__construct($date)
これを aまたは何らかのメソッドに追加することを考えましたが、setUp($date)
ここで立ち往生しています。また、に追加すると役立ち@Id
ますEntity\Product::date
か?
誰かが私を助けてくれることを願っています。私は完全な解決策を期待していません。良い方向への一歩は非常に高く評価されます。