【发布时间】:2019-01-28 03:32:42
【问题描述】:
有 3 个不同的数据库表 articles、reviews、posts,它们都有这些列:'id', 'title', 'user_id', 'created_at', 'body'。
我正在使用 Laravel 5.6 和 yajra/laravel-datatables 包,所以我需要“联合”这三个表并将其放入 jQuery DataTables 中。
为此,我使用 Laravel 的 union 查询构建器方法:
$fields = [
'id',
'title',
'user_id',
'created_at',
'body'
];
$articles = DB::table('articles')->select($fields);
$reviews = DB::table('reviews')->select($fields);
$posts = DB::table('posts')->select($fields);
$union = $articles->union($reviews)->union($posts)->get();
dd($union);
...这很好用,结果如下所示:
+----+-------------+---------+------------+------+
| id | title | user_id | created_at | body |
+----+-------------+---------+------------+------+
| 1 | Some title | 1 | ... | ... |
| 1 | Lorem ipsum | 2 | ... | ... |
| 1 | Test | 1 | ... | ... |
+----+-------------+---------+------------+------+
问题是我需要知道每条记录(行)来自哪个表。 是否可以添加包含数据库表名称的自定义列(例如“源”)? (使用查询生成器)
+----+-------------+---------+------------+------+----------+
| id | title | user_id | created_at | body | source |
+----+-------------+---------+------------+------+----------+
| 1 | Some title | 1 | ... | ... | articles |
| 1 | Lorem ipsum | 2 | ... | ... | reviews |
| 1 | Test | 1 | ... | ... | posts |
+----+-------------+---------+------------+------+----------+
【问题讨论】:
标签: mysql laravel laravel-5 union laravel-query-builder