Laravel查询添加额外列报错,求可行解决方案
解决Laravel查询添加额外字段报错的问题
你的问题出在误用了selectSub方法——这个方法是用来把子查询结果作为字段的,而你只是想给现有字段起别名,完全不需要用到它,这也是报错的原因。
针对你的需求,以下几种简单写法都能实现原生SQL的效果:
方法1:直接使用selectRaw(最贴近原生SQL)
DB::table('cases') ->selectRaw('id, extra_column as type') ->get();
方法2:结合普通select和DB::raw
DB::table('cases') ->select('id', DB::raw('extra_column as type')) ->get();
方法3:如果extra_column是固定字符串值
如果你的原生SQL里的"extra_column"是固定字符串(不是字段名),可以这么写:
DB::table('cases') ->select('id', DB::raw('"extra_column" as type')) ->get();
为什么原来的代码会报错?
你用selectSub传入的闭包生成的是(select extra_column) as type,这种语法要求子查询必须返回单个值,但实际上你只是想取现有字段的别名,完全没必要套子查询,所以会触发语法错误。
内容的提问来源于stack exchange,提问作者Eaimie
相关产品推荐
相关产品推荐

