使用laravel/fluent查询构建器,我试图使一个常量字段值通过以后订购的联合(ed)选择.我还没有找到配方,以流利的方式做到以下几点.工会很简单,但你如何让这个领域不断发挥作用呢?
想象一下两个简单的表(省略)和一个联合选择:
select field1, field2, 'type1' as field3 from table1
UNION
select field1, field2, 'type2' as field3 from table2
ORDER BY field2
Run Code Online (Sandbox Code Playgroud)
到目前为止,我提出的最佳答案是使用带有我自己制造的查询字符串的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
Run Code Online (Sandbox Code Playgroud)
Ant*_*iro 10
这样,大概:
$users = DB::table('users')
->select(DB::raw("'FOO' as field2"))
->get();
Run Code Online (Sandbox Code Playgroud)
小智 10
使用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();
Run Code Online (Sandbox Code Playgroud)
我发现$t1在这种情况下可以是Illuminate\Database\Query\Builder或的实例Illuminate\Database\Eloquent\Builder,但是union参数($t2)必须是类型Illuminate\Database\Query\Builder.
这意味着您可以使用以下内容进行预先加载:
$t1 = MyTableModel::with('table3')->select...
| 归档时间: |
|
| 查看次数: |
6144 次 |
| 最近记录: |