Пользователь может принадлежать многим Company
, которые, в свою очередь, имеют множество Department
.Хранение пар ключ-значение, которые имеют отношение «один ко многим» в области SESSION
Когда пользователь входит в систему, я хочу сохранить в области SESSION
, в каких отделах, в которых принадлежат компании.
Я сейчас делаю это как это (getDepartments
запрос содержит CompanyName
и DepartmentName
записи, которые принадлежат пользователю в):
<cfset SESSION.Department = StructNew()/>
<cfloop query="getDepartments" group="CompanyName">
<cfloop>
<cfset SESSION.Department[getDepartments.CompanyName][getDepartments.DepartmentName] = StructNew()/>
</cfloop>
</cfloop>
Если я бегу выше я получаю выход, как это:
struct
NESTLE
struct
SALES - struct [empty]
struct
HR - struct [empty]
----------------------------------------------
struct
MARS
struct
LOGISTICS - struct [empty]
Таким образом, каждый Департамент внутри Компании создает структуру. И поскольку нет никакой ценности для присвоения имени отдела, он показывает это как пустое.
Я думаю, что я делаю это неправильно. Но в равной степени я не знаю другого способа присвоить названиям нескольких подразделений одному имени компании в области SESSION.
Любые идеи?
Сво только те, к которым принадлежит пользователь. Я не включил запрос getDepartments, но только те, к которым принадлежит пользователь! –
Вы можете хранить информацию, но хотите, но правильный подход здесь зависит от того, как вы собираетесь ее использовать. Вы можете хранить имена отделов в виде списка, массива или даже оставить его как структуру (хотя и с простым значением). Затем используйте 'structKeyExists (struct.companyName," theDepartmentName ")', чтобы определить, является ли кто-то членом определенного отдела. Но опять же, все зависит от того, как вы в конечном счете используете информацию, которую вы не объяснили .... – Leigh