4LF
Новичок
класс для работы с таблицами БД (+обработка связей M:N ...)
делаю сайт, в его бд много таблиц со связями M:N 1:N
чтобы не писать примерно похожих обработчиков этих таблиц написал класс, который в зависимости от переданной конфы обслуживает ту или иную таблицу.
Оцените, покритикуйте...
А вот и класс(точнее его описание)
вот конфа таблицы - исходя из нее класс строит sql запросы для работы со связями и обычные insert/update/delete
в планах есть добавить к характеристике связей symbol(при удалении parent, child удаляться не будет)/hard( будет удаляться все ) link
вот часть структуры таблицы
делаю сайт, в его бд много таблиц со связями M:N 1:N
чтобы не писать примерно похожих обработчиков этих таблиц написал класс, который в зависимости от переданной конфы обслуживает ту или иную таблицу.
Оцените, покритикуйте...
А вот и класс(точнее его описание)
PHP:
$table = array
(
'table' => 'section', // имя таблицы
'key' => 'id', // ключ таблицы
'relations' => array // связи таблицы
(
// отношение 1:N
// type=ch:pa - child:parent
// parent_table=field_set - таблица на которую ссылается данная таблица
// parent_key=id - ключ в parent таблице
// parent_fields=* - какие поля нужно возвращать при select'e
// ptr=field_set_id - поле в таблице section, которое является "указателем" на parent таблицу
'field_set_idHASname' =>
'type=ch:pa&parent_table=field_set&parent_key=id&parent_fields=*&ptr=field_set_id',
// отношение M:N
// type=X:Y
// child_table=key - дочерняя таблица
// child_key=id - ключь в child таблице
// child_fields=name,type - возвращаемые поля
// sys_table=value - промежуточная таблица (содержит ключи parent и child таблицы + доп. поля)
// sys_ptr_pa=section_id - поле, указывающее на parent таблицу
// sys_ptr_ch=key_id - указатель на child таблицу
// sys_fields=value - доп поля
// ptr=id - поле из section, является ссылкой на child таблицу (key)
'sectionHASkey' =>
'type=X:Y&child_table=key&child_key=id&child_fields=name,type&sys_table=value&sys_ptr_pa=section_id&sys_ptr_ch=key_id&sys_fields=value&ptr=id',
//
'sectionHASchild' =>
'type=pa:ch&child_table=section&child_key=id&child_ptr=parent_id&child_fields=*&ptr=id'
)
);
в планах есть добавить к характеристике связей symbol(при удалении parent, child удаляться не будет)/hard( будет удаляться все ) link
вот часть структуры таблицы

B_DataObject
именно описание структуры БД...