使用laravel/fluent查询构建器,我试图使一个常量字段值传递给随后排序的联合(Ed)选择。我还没有找到使用fluent执行以下操作的方法。联合很简单,但是如何让字段常量工作呢?
假设有两个简单的表(省略)和一个联合select:
select field1, field2, 'type1' as field3 from table1
UNION
select field1, field2, 'type2' as field3 from table2
ORDER BY field2
到目前为止,我想出的最好的答案是将DB::query与我自己制造的查询字符串一起使用。考虑到我尝试过的测试用例,Laravel/fluent似乎还没有准备好处理这种情况。使用RAW进行select操作非常有效,除非您尝试对所选表查询对进行排序。
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
发布于 2013-08-02 13:05:59
使用Laravel 4,使用GROUP BY,而不是ORDER BY,我相信你可以这样做:
$t1 = DB::table('table1')
->select('field1',DB::raw("'FOO' as field2"))
->groupBy('field2');
$t2 = DB::table('table2')
->select('field1',DB::raw("'BAR' as field2"))
->groupBy('field2');
$result = $t1->union($t2)->get();
我发现本例中的$t1
可以是Illuminate\Database\Query\Builder
或Illuminate\Database\Eloquent\Builder
的实例,但联合参数($t2
)必须是Illuminate\Database\Query\Builder
类型。
这意味着您可以使用诸如以下内容的预加载:
$t1 = MyTableModel::with('table3')->select...
发布于 2013-06-06 00:50:43
这样,很可能是:
$users = DB::table('users')
->select(DB::raw("'FOO' as field2"))
->get();
https://stackoverflow.com/questions/16950419
复制