User、Attribute、Attribcategory、Attribvalue の 4 つのクラスがあります。
および 4 つのテーブル : データベース内の tbl_user、tbl_attribute、tbl_attribcategory、tbl_attribvalue。
それらはテーブル間の関係です:
tbl_user 1 --- n tbl_attribvalue n --- 1 attribute
(tbl_attribvalue は、属性とユーザーの間の中間テーブルです。
tbl_attribcategory 1 ---- n tbl_attribute
これは例です:
tbl_user
{id:1, name: Jack}
tbl_category {id:2,label: Career and Education}
tbl_attribute :
{id:1 ,category:2,label:employer , variable: employer}
{id:2 ,category:2,label: High school , variable: high_school}
{id:3 ,category:2,label:college , variable:college}
また、tbl_attribvalue は tbl_attribute と tbl_user の間の中間テーブルであるため、user id と属性 id を知る必要があります... user の属性の値を知るためです。
例
tbl_attribvalue {id:1,iduser:1,idattrib:3,value: Harvard University}
このシステムは、アプリケーションに静的ラベルの代わりに動的属性がある場合に使用されます。
クラスはどうですか?
User、Attribute、Attribvalue、Attribcategory の 4 つのクラスには、それぞれ getter と setter およびプロパティが含まれます。
特定のユーザーのこれらすべての属性、attribcategories、および attribvalues を返したい...しかし、どのメソッドを正確に使用すればよいかわかりません。それは問題の概念です。
私はすでにコントローラーにこのコードを持っています(MVCモデル内):
$atcdata=array();
$attribcategory=new Attribcategory($atcdata);
$attribcategories=$manager->viewIt($attribcategory,' defined=0 AND ownertype=1');
$manager は DBManager であり、関数 viewIt($object,$criteria) を含み、指定された基準を使用して、指定されたオブジェクトの結果を含む配列を返します。
属性カテゴリにはすべてのカテゴリが含まれます。
しかし、これらのカテゴリ情報を使用して、特定のユーザーの属性と属性値を返すにはどうすればよいでしょうか?
言い換えると :
それらを返す方法は知っていますが、パフォーマンスの観点から、すべてのデータを取得するために2つ以上のクエリを使用したくありません。
このデータ例は、特定のユーザーに対して次のように表示されます
[attrcategory]
[attribute] : [attrvalue]
[attrvalue]
[attrvalue]
Work & Education
Employer : Oracle
Microsoft
College : Harvard
High school : harvard
など。
前もって感謝します