Laravel Eloquent / Query Builder - PullRequest
       8

Laravel Eloquent / Query Builder

0 голосов
/ 17 октября 2018

У меня есть 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();

Моим первоначальным замыслом было попытаться как-то объединить их вместе?Это не сработало, поскольку они не имеют одинаковую структуру столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...