gpt4 book ai didi

mysql - 使用 laravel 查询生成器的字段常量

转载 作者:可可西里 更新时间:2023-11-01 06:35:48 24 4
gpt4 key购买 nike

使用 laravel/fluent query builder,我试图让一个常量字段值通过一个 union(ed) selection that subsequently ordered 。我还没有找到用流利的方式执行以下操作的方法。工会很容易,但如何让场常数发挥作用?

想象两个简单的表(略)和一个联合选择:

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 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

最佳答案

使用 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...

关于mysql - 使用 laravel 查询生成器的字段常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com