是否可以在agiletoolkit中使用UNION sql?

时间:2012-01-29 03:26:16

标签: atk4

我想结合表:sql是:

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

是否可以在dsql()或dq()语句中使用该查询?

1 个答案:

答案 0 :(得分:0)

我是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');

结果模型将是只读的,但可以在任何地方完全使用,支持分组,条件,限制,并且只查询必要的字段。


不使用“报表扩展”的解决方案将涉及手动对齐嵌套模型中的查询并将它们放在Expression中:

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

现在认为支持4.4之前的版本已经过时了。