オブジェクト データを格納するために EAV 構造を使用するシステムに取り組んでいます。モデル自体には、いくつかの事前定義された属性 (座標と日付/時刻スタンプ) があります。つまり、次のとおりです。
- バツ
- よ
- Z
- 開始日時
- 終了日時
残りの属性はユーザーによって動的に作成され、属性テーブルに行として追加されます。これらの行はピボットされ、値の表に合わせて列として使用されます (これに説明が必要かどうかはわかりませんでしたが、申し訳ありませんが安全だと判断しました)。
オブジェクト (またはエンティティ) と属性の関係は 1 対多です。
属性と値の関係は 1 対多です。
私は Eloquent/Laravel を初めて使用しますが、リレーションシップのドキュメントを読み、1 対多のリレーションシップの機能があることを確認しましたが、EAV 内のすべてのデータを参照する方法がわかりません (RDBMS 向けのようです) )。このようなものでしょうか (これは大雑把な例であることに注意してください)。
class UserObject extends Eloquent {
public function object_data()
{
return $this->hasMany(attributes_data);
}
public function attributes_data()
{
return $this->hasMany('Values');
}
}
基本的に、私の質問は次のとおりです。
EAV に関連付けられたすべてのデータを取得するときにモデルを設計/作成するための受け入れられた (または適切な) アプローチはありますか? もしそうなら、Eloquent/EAV アプローチのドキュメントやチュートリアルを教えてもらえますか?
考えた後のいくつか:
私の考えでは、EAV のコンポーネントごとに 3 つのクラスを作成する必要があると考えていました (つまり、エンティティ コンポーネント データ用に 1 つ、属性データ用に 1 つ、値データ用に 1 つ)。
ありがとうございました。