mysql - 如何在 eloquent laravel 中使用别名编写 SQL 查询?
问题描述
我整天都在尝试如何用 eloquent 编写 SQL 查询。我知道如果必须的话我可以使用 raw,但我很好奇有没有办法做到这一点?
我的原始 SQL 是:
SELECT *
FROM
(SELECT 1 as own, id, up_date, top_list_end_date
FROM advertisements
WHERE top_list_end_date > now()
UNION ALL
SELECT 2 as own, id, up_date, top_list_end_date
FROM advertisements
WHERE top_list_end_date IS NULL) a
ORDER BY own, up_date DESC
在 Laravel 我正在尝试:
$groupA = $adv->where('top_list_end_date', '>', Carbon::now());
$groupA->select('*')
->selectSub(function ($query) {
$query->selectRaw('1');
}, 'own');
$groupB = $restAdv->whereNull('top_list_end_date');
$groupB->select('*')
->selectSub(function ($query) {
$query->selectRaw('2');
}, 'own');
$result = $groupA->unionAll($groupB);
$result->orderBy('own', 'desc')->orderBy('up_date', 'desc')->get();
有没有办法在 eloquent 中创建相同的选择?
解决方案
如果你想在 laravel 中使用 SQL 查询。您可以使用查询生成器,例如
DB::raw();
或者
DB::select();
如果你想使用带别名的 SQL 查询,就这样写。
$users = DB::table('your_table_name AS t')
->select('t.id AS uid')
->get();
希望这个答案对您有所帮助。
祝你好运:)
推荐阅读
- amazon-ec2 - 如何过滤 prometheus.yml 中的 EC2 实例?
- javascript - 如何使用reduce函数有效地评估javascript数组中的元素
- vba - 使用下一个工作日(周)访问 VBA
- php - 如何在 WordPress 中找到现有小部件的 ID?只有当小部件出现在前端时我才需要运行一个函数
- javascript - nginx和奇偶校验的Websocket连接?
- excel - 在大型 Excel 文档中查找数据以便稍后与找到的其他数据一起使用的参数
- r - 允许引用具有索引和名称的列的函数
- jenkins - Jenkins 代理作为 Jenkins 管道中阶段级别的变量
- python - python:包含对 lambda 函数的引用的导入全局变量的状态
- sql - 删除列名中带引号的列