私は2つのエンティティを持っています。最初に「ステータス」と呼ばれる:
<?php
class Status {
protected $id;
protected $type = null; // standarized type of status (f.e. "locked", "disabled")
protected $value = true; // true or false (value of status)
protected $change_reason = null;
protected $changed_by;
protected $changed_at;
}
読みやすくするために注釈をクリアしました。
そして2番目はegと呼ばれます。アカウント。ステータスを使用するエンティティはアカウントだけではないため、ステータスと他の「ステータス可能な」エンティティ (私が思うに) との関係は多対多でなければなりません。アカウントの場合、結合テーブル account_status などがあります。
さらに、1 つのステータスは 1 つのエンティティにのみ属します。
その構成ではすべて機能しますが、最新のステータスでアカウントのリストを取得する方法が本当にわかりません。
実際のステータスを取得する SQL クエリを作成しました。
SELECT * FROM (
SELECT t.type, t.value
FROM status AS t
ORDER BY t.changed_at DESC
) AS t1 GROUP BY t1.type
私の質問は次のとおりです。
- その考えは果たして正しいのでしょうか。
- すべての最新ステータスを含むアカウントのリストを取得する方法は?
下手な英語でごめんなさい。
編集: アカウントを取得し、その最新のステータスに参加し、次の方法で簡単に取得したい: $task -> getStatus('highlighted') タイプ「ハイライト」の最新 (最も若い) ステータスの値を取得する
EDIT2 : 理想的には、特定のタイプのステータスでソートおよびフィルタリングする機能がまだあります