字段并指定固定值"/>
Laravel使用DB的select查询时,在查询结果中增加一个字段并指定固定值
前言:假设在关联查询中(参考巧用union联合查询实现对分表或相似结构表的多表操作),查询出三张表的含有id和title等相同字段的数据N条,现在需要有一个字段来分清这N条数据属于那张表查询到的。
实现:
我们在查询的时候,就可以在返回结果中新增一个字段table_name,并指定值为指定表名。
select *,"videos" as
table_name from videos;
- sql原生查询语句
- Laravel在DB的select查询使用DB::raw(
)
$videos=DB::table('videos')->select([DB::raw('"videos" as table_name'),'id','title','sub_title','user_id','category_id','status','verify_status','created_at','deleted_at']);$article=DB::table('articles')->select([DB::raw('"articles" as table_name'),'id','title','sub_title','user_id','category_id','status','verify_status','created_at','deleted_at']);$query=DB::table('pictures')->select([DB::raw('"pictures" as table_name'),'id','title','sub_title','user_id','category_id','status','verify_status','created_at','deleted_at'])->unionAll($videos)->unionAll($article);$querySql = $query->toSql();$result = DB::table(DB::raw("($querySql) as r"))->mergeBindings($query)->orderBy('deleted_at','asc')->whereNotNull('deleted_at')->get();
注意上面的格式,使用关键字as,as 可理解为:用作、当成,作为;平常使用as是为字段取一个别名,as的左边是一个原始字段名,右边是新的别名,该别名会显示在查询结果中,而原始字段名代表的就是该字段的值; 此处为新增字段指定固定值,as的左边为新增字段的固定值,右边才是新增字段的字段名,此时字段名不用加引号,如果固定值为数值型则不用加引号,如果固定值为其他类型则必须加引号
更多推荐
Laravel使用DB的select查询时,在查询结果中增加一个字段并指定固定值
发布评论