Каким образом написать query builder запрос, чтобы он генерировал запрос такого вида:
SELECT * FROM (
(SELECT id as locale_id, value as locale FROM a3_locale) t1
LEFT JOIN
(SELECT locale_id AS loc_id, var_id, value FROM a3_var_locale WHERE var_id = 1) t2
ON t2.loc_id = t1.locale_id
)
Делаю так:
$query_locales = DB::select( array('value', 'locale'), array ('id', 'locale_id') )
->from("{$pre}locale");
$query_var_locales = DB::select( array('locale_id', 'loc_id'), 'value', 'var_id' )
->from("{$pre}var_locale")
->where('var_id', '=', $id);
$query_locales_vars_join = DB::select()
->from(array($query_locales, "t1"))
->join(array($query_var_locales, "t2"), "LEFT")
->on("t2.locale_id", "=", "t1.loc_id");
Возвращает неправильно сгенерированный:
SELECT * FROM <b>['(']</b>
(SELECT `value` AS `locale`, `id` AS `locale_id` FROM `a3_locale`) AS `t1`
LEFT JOIN
(SELECT `locale_id` AS `loc_id`, `value`, `var_id` FROM `a3_var_locale` WHERE `var_id` = 3) AS `t2`
ON
(`t2`.`locale_id` = `t1`.`loc_id`)
<b>[')']</b>
В "[ ]" я отобразил то, чего не хватает в запросе, чтобы он был рабочим.