有一个关于sql中伪列字段获取的疑问

$query2 = DB::table('contracts')
    ->leftJoin('invoices','invoices.contract_id','=','contracts.id')
    ->select('*')
    ->addSelect(DB::raw("CASE WHEN ISNULL(invoices.end_date) THEN DATE_SUB(contracts.start_date,INTERVAL 1 DAY) ELSE invoices.end_date END as `invoices.end_date2`"))
    ->addSelect(DB::raw("CASE WHEN ISNULL(invoices.end_date) THEN DATEDIFF(NOW(),DATE_SUB(contracts.start_date,INTERVAL 1 DAY)) ELSE DATEDIFF(NOW(),invoices.end_date) END as `invoices.diff_day`"))
    ->where('contracts.contract_type_id',29)
    ->groupBy('invoices.contract_id')
    ->having('diff_day','>=' ,30)
    ->orderByDesc('end_date2');

想问下这段代码转成的sql语句在sql中可以执行,但是跑接口的时候提示 diff_day 这个字段找不到,如果我想获取这个字段有什么思路吗?diff_day 是一个伪列。

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

目前已经换了种逻辑处理掉了,感谢

3年前 评论
讨论数量: 2

不应该是

->having('invoices.diff_day','>=' ,30)

这样吗?

3年前 评论
RyanEdward (楼主) 3年前

目前已经换了种逻辑处理掉了,感谢

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!