テーブルを使用して、特定のレコードのステータスが変更された日付と時刻をentries
に保存すると、現在のステータスを取得する最も簡単な方法を見つけようとしています、AKA、最新の日付のステータス。例えばDoctrine 2 - 履歴テーブルから最新のレコードを取得する
次の点を考慮してくださいstatus_history
+----+----------+------------+-----------+
| id | entry_id | status | timestamp |
+----+----------+------------+-----------+
| 1 | 1 | Processing | 15:05:09 |
| 2 | 1 | In Review | 15:05:18 |
| 3 | 1 | Complete | 15:05:26 |
+----+----------+------------+-----------+
そしてもちろん、私たちのエントリ:entries
+----+--------+
| id | title |
+----+--------+
| 1 | Foobar |
+----+--------+
私が取得することができますどのように
、DQL、(技術的に最新の状態で現在のステータス)をのlatest_status_id
の列を私のEntry
エンティティ?
$entry->getCurrentStatus()
を呼び出すと、"Complete"
が返されるとします。しかし、そのエントリーに大量の状況レコードがある場合、すべての状況をロードするための2番目の照会がパフォーマンス低下につながる可能性があります。
注:this articleでは、並行処理のためのロック機構を使用して、余分な列のアプローチで説明しています。私は各テーブル(status_history.entry_id
とentry.latest_history_id
)の二重の関係を持たないようにしようとしているので、これが正しいものでない限り、このアプローチを避けたいと思います。
'$ entry'をどのように取得しますか? – JimL
もちろんDQLを使用しています。しかし、クエリそのものは、それが状態の最後の行をもたらすという考えから、私が把握しようとしていることです。 –
質問があなたが把握しようとしているものであれば、投稿に追加することをお勧めします。人のための障壁を低くして、正しい方向に助けを借りて声をかけることがあります。 – JimL