Можно ли использовать UNION sql в agiletoolkit? - PullRequest
0 голосов
/ 29 января 2012

Я хочу объединить в таблицы: sql:

select name, extract(DAY from fechaNacimiento) from alumno
union
select name,extract(DAY from fechaNacimiento) from asesor

Можно ли использовать этот запрос в выражении dsql () или dq ()?

1 Ответ

0 голосов
/ 31 января 2012

Я являюсь автором Agile Toolkit и реализация UnionModel теперь доступна как отдельный модуль для Agile Data .

http://www.agiletoolkit.org/data/extensions/report

С расширением, предполагая, что у вас есть модели для "Alumno" и "Asesor", для которых определены поля имени / дня для выполнения вышеприведенных запросов, вы можете построить модель объединения на основе логики домена:

$union = new \atk4\report\UnionModel($db);
$union->addNestedModel(new Model_Alumno());
$union->addNestedModel(new Model_Asesor());
$union->addField('name');
$union->addField('day');

Полученная модель будет доступна только для чтения, но может использоваться в любом месте, будет поддерживать группировку, условия, ограничения и будет запрашивать только необходимые поля.


Решение без использования «Reporting Extension» предполагает ручное выравнивание запросов из вложенных моделей и помещение их в выражение:

$expr = new \atk4\dsql\Expression(
    "select ... from ([] union [])",
    [
        $m1->action('select', [$fields]), 
        $m2->action('select', [$fields]),
    ]
);

Поддержка версий до 4.4 теперь считается устаревшей.

...