Я являюсь автором 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 теперь считается устаревшей.