Конструирование запроса с использование JOIN в Kohana3
Предстояло мне сформировать запрос с использование 2-х таблиц связанных с помощью конструкции JOIN. Беда была в том, что таблицы имели префикс (test_), который был указан в конфиге БД и к созданным алиасам, указанных таблиц, цеплялся префикс таблицы.
Ниже приведен запрос который был после использования такой конструкции:
DB::select() ->from(array('context_adv_theme', 't')) ->join(array('context_adv', 'a'), 'inner') ->on('t.id', '=', 'a.theme_id') ->where('fl', '=' ,1);
SELECT * FROM `test_context_adv_theme` AS `t` INNER JOIN `test_context_adv` AS `a` ON (`test_t`.id = `test_a`.theme_id) WHERE `fl` = 1
как видно в конструкции ON получалась такая запись (`test_t`.id = `test_a`.theme_id), вместо (`t`.id = `a`.theme_id)
для того, чтобы было (`t`.id = `a`.theme_id) необходимо ставить алиасы таблицы в конструкторе запроса ->ON в двойные кавычки, как это показано на нижнем примере:
DB::select() ->from(array('context_adv_theme', 't')) ->join(array('context_adv', 'a'), 'inner') ->on('"t".id', '=', '"a".theme_id') ->where('fl', '=' ,1);
SELECT * FROM `test_context_adv_theme` AS `t` INNER JOIN `test_context_adv` AS `a` ON (`t`.id = `a`.theme_id) WHERE `fl` = 1
В помощь тебе, юзер!!!
Статья просмотренна 41229 раз, зашло посетителей 14203