Laravel mysql联合多个表

时间:2018-03-31 21:46:53

标签: php mysql laravel union

我有多个相同的 mysql数据库表
我需要的是原始sql Laravel架构来获取数据库中所有表的 Union ,除了那个不一样。
我已经尝试过以下代码

$multipleUnion = DB::table('teble_1')->union(DB::table('teble_2')->union(DB::table('teble_3')))->get();

但是我收到了这个错误

  

SQLSTATE [42000]:语法错误或访问冲突:1064 SQL语法中有错误;检查与您的MySQL服务器版本相对应的手册,以便在' union附近使用正确的语法(select * from table_3))'第1行(SQL :( select * from table_1)union((select * from table_2)union(select * from table_3)))

我不想查询

SELECT * FROM table_1 UNION SELECT * FROM table_2 UNION SELECT * FROM table_3

因为表的数量会随着时间的推移而增加。 在此先感谢。

1 个答案:

答案 0 :(得分:2)

试试这个:

$multipleUnion = DB::table('teble_1')->union(DB::table('teble_2'))
    ->union(DB::table('teble_3'))->get();

从表名数组创建查询:

$query = DB::table($tables[0]);
foreach(array_slice($tables, 1) as $table) {
    $query->union(DB::table($table));
}
$multipleUnion = $query->get();