У меня есть четыре класса: User, Attribute, Attribcategory, Attribvalue.
и четыре таблицы: 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, мы должны знать идентификатор пользователя и идентификатор атрибута... чтобы знать значение атрибута пользователя.
пример
tbl_attribvalue {id:1,iduser:1,idattrib:3,value: Harvard University}
Эта система используется, когда у нас есть динамические атрибуты вместо статических меток в приложении.
Как насчет занятий?
Четыре класса: User, Attribute, Attribvalue, Attribcategory содержат геттеры, сеттеры и свойства каждый.
Я хочу вернуть все эти атрибуты, категории атрибутов и значения атрибутов для данного пользователя... Но я не знаю, какой именно метод использовать, это вопрос концепции.
У меня уже есть этот код в моем контроллере (в модели 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
и тому подобное.
заранее спасибо