Доброго времени суток уважаемые форумчане. Челом бью, помощи прошу и наставления. Суть вопроса такова : есть форма на фронтенде сайта, которая работает по аналогии с фильтром товара. В связи с этим в модели есть вот такой запрос в БД:
protected function getListQuery() {
$jinput = JFactory::getApplication()->input;
$formdata = $jinput->get('jform', '', 'array');
$this->setState( 'list.start', 0 );
$this->setState( 'list.limit', 200 ); // лимит вывода
if ($formdata['valute'] == '1') {
$price = "`price`";
}elseif ($formdata['valute'] == '2') {
$price = "price2";
}elseif ($formdata['valute'] == '3') {
$price = "price3";
}
if($formdata != NULL ) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('*');
$query->from('`#__tour`');
if ($formdata['strana_tour'] != NULL) {
$query->where('`strana_tour` = '. $db->quote($formdata['strana_tour']));
}
if ($formdata['strana_ot'] != NULL) {
$query->where('`strana_ot` = '. $db->quote($formdata['strana_ot']));
}
if ($formdata['start_date'] != NULL and empty($formdata['end_date'])) {
$query->where('`start_date` >= '. $db->quote($formdata['start_date']));
}
if ($formdata['end_date'] != NULL and empty($formdata['start_date'])) {
$query->where('`end_date` >= '. $db->quote($formdata['end_date']));
}
if ($formdata['start_date'] != NULL and $formdata['end_date'] != NULL) {
$query->where('`start_date` >= '. $db->quote($formdata['start_date']));
$query->where('`end_date` <= '. $db->quote($formdata['end_date']));
}
if ($formdata['vzroslie'] != NULL and empty($formdata['deti'])) {
$query->where('`vzroslie` >= '. $db->quote($formdata['vzroslie']));
}
if ($formdata['deti'] != NULL and empty($formdata['vzroslie'])) {
$query->where('`deti` >= '. $db->quote($formdata['deti']));
}
if ($formdata['vzroslie'] != NULL and $formdata['deti'] != NULL) {
$query->where('`vzroslie` >= '. $db->quote($formdata['vzroslie']));
$query->where('`deti` >= '. $db->quote($formdata['deti']));
}
if ($formdata['night_start'] != NULL and empty($formdata['night_end'])) {
$query->where('`night` >= '. $formdata['night_start']);
}
if ($formdata['night_end'] != NULL and empty($formdata['night_start'])) {
$query->where('`night` >= '. $formdata['night_end']);
}
if ($formdata['night_start'] != NULL and $formdata['night_end'] != NULL) {
$query->where('`night` >= '. $formdata['night_start']);
$query->where('`night` <= '. $formdata['night_end']);
}
if (!empty($formdata['sp_inp']) and empty($formdata['ep_inp'])) {
$query->where( $price . ' >= ' . $formdata['sp_inp']);
}
if (empty($formdata['sp_inp']) and !empty($formdata['ep_inp'])) {
$query->where( $price . ' <= ' . $formdata['ep_inp']);
}
if ($formdata['sp_inp'] != NULL and $formdata['ep_inp'] != NULL) {
$query->where( $price . ' >= ' . $formdata['sp_inp']);
$query->where( $price . ' <= ' . $formdata['ep_inp']);
}
if ($formdata['eat'] != NULL) {
$query->where( 'eat IN ( ' . "'" . implode("', '", $formdata['eat']). "'" .' )');
}
if ($formdata['star'] != NULL) {
$query->where( 'star IN ( ' . "'" . implode("', '", $formdata['star']). "'" .' )');
}
if ($formdata['resort'] != NULL) {
$query->where( 'resort IN ( ' . "'" . implode("', '", $formdata['resort']). "'" .' )');
}
if ($formdata['hotels'] != NULL) {
$query->where( 'otel IN ( ' . "'" . implode("', '", $formdata['hotels']). "'" .' )');
}
if (JLanguageMultilang::isEnabled()) {
$query->where('language in (' . $db->quote(JFactory::getLanguage()->getTag()). ',' . $db->quote('*'). ')');
}
$query->where('`published` = 1');
$query->order('`id` DESC');
return($query);
}
В зависимости от того заполнено или нет то или иное поле к запросу добавляется определенное условие. Запрос срабатывает (не совсем конечно красивый код да и кавычки не везде экранированы, но это лишь прототип) и выдает нужный результат. Однако в результате есть строка "курорт". В БД есть 2 таблицы - таблица с турами (турфирма) и таблица с курортами. Когда администратор заполняет тур в админке он присваивает ему тот или иной курорт.
Собственно вопрос: как, зная ид записи в таблице с курортами, вытянуть название (поле title) курорта ? Курорты находятся в другой таблице, не связанной по сути с таблицей туров. В составных запросах я не силен + у меня возник вопрос - можно ли это возложить на работу контроллера или же подобные вещи нужно делать только в модели и писать составной запрос в БД ?
В общем натолкните на путь истинный и помогите с составным запросом. Учитывая "монстра" который есть сейчас не могу смекнуть как дописать в него условие и что делать если нужно будет не с 1 а с 2 или трех разных таблиц выбрать данные Заранее прошу прощения если вопрос покажется кому - либо сильно глупым.