Имена таблиц должны передаваться как параметр (массив строк). Мне нужно получить из каждой таблицы значения тех же столбцов foreign_key_id
и updated_at
, но только самые последние десять результатов (я имею в виду те, которые были в последний раз обновлены). Мне нужно объединить результат из каждой таблицы. Кроме того, у меня уже есть список foreign_key_id
s, для которого я ищу таблицы. Как я пытался это сделать:
$foreign_key_ids = ['1', '2', '3', '4'];
$tables = ['table_A', 'table_B', 'table_C'];
foreach ($foreign_key_ids as $foreign_key_id)
{
$index = 0;
foreach($tables as $table)
{
$query = DB
::table($table)
->select('foreign_key_id', 'updated_at')
->where('foreign_key_id', $foreign_key_id)
->orderBy('updated_at', 'desc')
->limit(10);
if ($index == 0)
{
$single_table = $query;
}
else
{
$single_table->union($query);
}
$index++;
}
$full_result[] = $single_table;
}
$final_result = [];
foreach($full_result as $single_result)
{
$final_result->union($single_result);
}
$final_result = $final_result->get();
}
Но я получаю исключение Call to a member function union() on array
и не знаю почему, причина $single_result
в последнем foreach
не является массивом, это экземпляр builder
.