【PHP】使用buildsql构造子查询
需求
有时我们需要从多个数据表中检索数据并合并展示,这种情况下就可以使用子查询来实现跨表查询。
示例
我们有两张表:r_book表和r_xiao_book表。r_book表包含id、book和year字段,而r_xiao_book表包含id、bookname和year字段。由于book和bookname两个字段名称不一致,但在使用子查询时需要保持输出字段名相同,因此在查询时我们将r_xiao_book表的bookname字段通过别名设置为book,这样就实现了两个表输出字段名称的统一。
$list1 = Db::table('r_book')->field('id,book,year')->buildSql();$list2 = Db::table('r_xiao_book')->field('id,bookname as book,year')->union($list1)->buildSql();$list = Db::table($list2.'l')->paginate(10,false,['query'=>request()->param()]);return $list;注意:输出的字段名必须要完全一致,否则会出错!
