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