我有四个类:用户、属性、属性类别、属性值。
以及数据库中的四个表: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 和 attribute id ...才能知道 user 的属性值。
示例
tbl_attribvalue {id:1,iduser:1,idattrib:3,value: Harvard University}
当我们在应用程序中使用动态属性而不是静态标签时使用此系统。
上课呢?
这四个类:User、Attribute、Attribvalue、Attribcategory 分别包含 getter 和 setter 以及属性。
我想返回给定用户的所有这些属性、属性类别和属性值……但我不知道具体使用什么方法,这是一个概念。
我的控制器中已经有这段代码(在 MVC 模型中):
$atcdata=array();
$attribcategory=new Attribcategory($atcdata);
$attribcategories=$manager->viewIt($attribcategory,' defined=0 AND ownertype=1');
$manager 是一个 DBManager,它包含一个函数 viewIt($object,$criteria),然后使用给定的条件返回一个包含给定对象结果的数组。
所以属性类别将包含所有类别。
但是如何使用这些类别信息来返回给定用户的属性和属性值?
换句话说 :
我知道如何返回它们,但就性能而言,我不想使用两个以上的查询来获取所有数据。
对于给定用户,此数据示例将显示如下
[attrcategory]
[attribute] : [attrvalue]
[attrvalue]
[attrvalue]
Work & Education
Employer : Oracle
Microsoft
College : Harvard
High school : harvard
之类的。
先感谢您