Существует 3 разные таблицы базы данных: статьи, обзоры, сообщения, и все они имеют следующие столбцы: 'id', 'title', 'user_id', 'created_at', 'body'.
Я использую Laravel 5.6 и пакет yajra/laravel-datatables, поэтому мне нужно «объединить» эти три таблицы и поместить их в Таблицы данных jQuery.
Для этого я использую метод построения запросов 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 |
+----+-------------+---------+------------+------+----------+
Подробнее здесь: https://stackoverflow.com/questions/519 ... ame-column