У меня есть SQL-запрос, который я хочу превратить в Eloquent Collection, чтобы возвращалось больше данных о миграции.Я могу прочитать синтаксис Eloquent, но не могу понять, как правильно его написать.
$pastIssues = DB::select(
"SELECT incident_id, status, message, user_id, created_at, updated_at, 'i' as source,
(
SELECT name FROM incidents
WHERE id = ?
)
AS title FROM incident_updates
WHERE incident_id
IN (
SELECT id FROM incidents
WHERE id = ?
)
UNION SELECT schedule_id, status, message, user_id, created_at, updated_at, 'm' as source,
(
SELECT name FROM schedules
WHERE id = schedule_id
)
AS title FROM schedule_updates
WHERE schedule_id
IN (
SELECT id from schedules
WHERE component_id = ?
)
ORDER BY created_at DESC;", [$componentId, $componentId, $componentId]);
Выше приведен SQL-запрос.Я не уверен, какие другие данные / информация необходимы.Но может предоставить при необходимости.
Уже собранная коллекция инцидентов выглядит следующим образом:
allIncidents = Incident::where('visible', '>=', (int) !Auth::check())->where('component_id', '=', $component->id)->where('status', '=', 4)->whereBetween('occurred_at', [
$startDate->copy()->subDays($appIncidentDays)->format('Y-m-d').' 00:00:00',
$startDate->format('Y-m-d').' 23:59:59',
])->orderBy('occurred_at', 'desc')->get()->groupBy(function (Incident $incident) {
return app(DateFactory::class)->make($incident->occurred_at)->toDateString();
});
Уже созданная коллекция обслуживания выглядит следующим образом:
$pastScheduledMaintenance = Schedule::with('updates')->pastSchedules()->orderBy('scheduled_at', 'desc')->get();
Моим первоначальным замыслом было попытаться как-то объединить их вместе?Это не сработало, поскольку они не имеют одинаковую структуру столбцов.