使用laravel / fluent查询构建器,我试图使一个常量字段值通过以后订购的联合(ed)选择 . 我还没有找到配方,以流利的方式做到以下几点 . 工会很简单,但你如何让这个领域不断发挥作用呢?
想象一下两个简单的表(省略)和一个联合选择:
select field1, field2, 'type1' as field3 from table1
UNION
select field1, field2, 'type2' as field3 from table2
ORDER BY field2
到目前为止,我提出的最佳答案是使用带有我自己制造的查询字符串的DB ::查询 . 考虑到我尝试过的测试用例,Laravel / fluent似乎还没准备好处理这种情况 . 使用RAW进行选择很有效,直到您尝试订购一对选定的表查询 .
SELECT field1, field2 FROM
(
SELECT fld1A as field1, 'FOO' as field2 from table1
UNION ALL
SELECT fld2A as field1, 'BAR' as field2 from table2
)
temp_table order by somefield
2 回答
使用Laravel 4,并使用GROUP BY而不是ORDER BY我相信你可以这样做:
我发现
$t1
在这种情况下可以是Illuminate\Database\Query\Builder
或Illuminate\Database\Eloquent\Builder
的实例,但union参数($t2
)必须是Illuminate\Database\Query\Builder
类型 .这意味着您可以使用以下内容进行预先加载:
$t1 = MyTableModel::with('table3')->select...
这样,可能: