[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: раскритикуйте код или дайте совет
Gradus
В одном модуле сайта запрос:
select `id` as `id_sing` from `sings` INNER JOIN ...

В другом модуле наименование алиаса другое:
select `id` as `sing_id` from `sings` INNER JOIN ...

и так далее...

Соответственно что бы вывести в шаблон правильный алиас, нужно искать какое наименование алиаса было задано в модуле. Это создаёт путаницу в шаблонах, особенно когда алисы не указаны, а наименование столбов в таблице одинаковое, отдаются не правильные id'шники.

Написал на коленке гав*код и запихнул все запросы в один класс.
И вот что получилось, в этом классе к примеру есть метод:
function sings_last($count){

$sql_group_obj=$this->table_obj->group;
$sql_sing_obj=$this->table_obj->sings;
$sql_sings_text_obj=$this->table_obj->sings_text;

$select_sql=$sql_group_obj->string_for_select('url','name');
$select_sql.=','.$sql_sing_obj->string_for_select('url','name');
$select_sql.=','.$sql_sings_text_obj->string_for_select('id');

$sings_colms=$sql_sing_obj->array_for_where('id','group_id');
$sings_text_colms=$sql_sings_text_obj->array_for_where('sing_id');
$group_colms=$sql_group_obj->array_for_where('id');

$this->sql_query="SELECT
"
.$select_sql."
FROM "
.$sql_sings_text_obj->get_table_name()."
INNER JOIN "
.$sql_sing_obj->get_table_name()." ON ".$sings_colms['id']."=".$sings_text_colms['sing_id']."
INNER JOIN "
.$sql_group_obj->get_table_name()." ON ".$group_colms['id']."=".$sings_colms['group_id']."
ORDER BY "
.$sings_text_colms['sing_id']." DESC LIMIT ".$count;
}

через аргументы указываем какие столбцы нужны, в обратку массив c оригинальным названиями столбцов или сформированная строка с подстановкой алиасов.
Методы которые формируют колонки, держат в себе наименование оригинальных столбцов и их алиасов которые забиты жёстко в php коде.

Меня напрягает что требуются ресурсы на такое форматирование: циклы, объекты и т.п. Наверное вам такой метод тоже не понравился, напишите почему кроме моих довыдов :) И есть ли лучшие варианты ?

_____________
ДАВАЙ ДЕНЬГИ
R543264623869
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.