Laravel выберите слева объединить все столбцы в новом индексе массива - PullRequest
0 голосов
/ 31 января 2020

У меня есть один вопрос в laravel запросе и поиск в Google, и я не могу найти, что

Это мой запрос:

$data = DB::table('event')
        ->where('TU', '!=', null)
        ->where('TM', '!=', 180)
        ->leftJoin('market', 'event.event_id', '=', 'market.event_id')
        ->select([
            'event.event_id as id',
            'TU',
            DB::raw('(TM*60+TS) as elapsed'),
            'markets' => 'market.*'
        ])
        ->orderBy('event.time', 'ASC')
        ->get();

и мой результат таков:

Collection {#380 ▼
  #items: array:3 [▼
    0 => {#381 ▼
      +"id": 629
      +"TU": 0
      +"elapsed": 1200
      +"default": 1
      +"group_name": "other"
      +"api_updated_at": null
      +"updated_at": "2020-01-31 11:16:11"
    }
    1 => {#382 ▶}
    2 => {#385 ▶}
  ]
}

Я хочу, чтобы все столбцы из таблицы рынка были помещены в один индекс в результате

вот так:

Collection {#380 ▼
  #items: array:3 [▼
    0 => {#381 ▼
      +"id": 629
      +"TU": 0
      +"elapsed": 1200
      +"markets": array:3 [▼
        0 => {#382 ▼
          +"default": 1
          +"group_name": "other"
          +"api_updated_at": null
          +"updated_at": "2020-01-31 11:16:11"
        }
        1 => {#383 ▶}
        2 => {#384 ▶}
      ]
    }
  ]
}

пожалуйста, помогите мне для редактирования запроса в laravel

1 Ответ

0 голосов
/ 31 января 2020

вы не можете использовать поле вместо множества полей одной таблицы в select. Вы можете попробовать использовать

->select([
        'event.event_id as id',
        'TU',
        DB::raw('(TM*60+TS) as elapsed'),
        'market.*'
    ])

или with('market') вместо leftjoin

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