У меня есть построитель запросов, который возвращает объединенную таблицу с выбранными столбцами. Мне удалось выбрать нужные столбцы, но я хочу сгруппировать некоторые столбцы в свойство объекта.
Вот результат, который я получаю сейчас.
{
"id": 2,
"name": "Khalid Kuhlman",
"email": "P2eoZ6.georgianna.krajcik@example.org",
"longitude": 114.782468,
"latitude": -8.204574,
"created_at": "2020-03-20T15:22:37.000000Z"
}
Это то, что я ожидал
{
"id": 2,
"name": "Khalid Kuhlman",
"email": "P2eoZ6.georgianna.krajcik@example.org",
"coordinate": {
"longitude": 114.782468,
"latitude": -8.204574
},
"created_at": "2020-03-20T15:22:37.000000Z"
}
Вот мой конструктор запросов.
$agents = Agent::leftJoin('users', 'users.id', 'agents.id');
$agents = $agents->select(['agents.id',
'users.name',
'users.email',
// DB::raw('(SELECT * FROM (
// SELECT X(`users`.`last_position`) AS longitude,
// Y(`users`.`last_position`) AS latitude
// FROM `users`) position
// ) AS coordinate'),
DB::raw('X(`users`.`last_position`) AS longitude'),
DB::raw('Y(`users`.`last_position`) AS latitude'),
'agents.created_at']);
if (! empty($q)) {
$agents = $agents->where('users.name', 'like', "%{$q}%");
}
if (! empty($sortBy)) {
$agents = $agents->orderBy($sortBy, $orderBy);
}
$agents = $agents->paginate($perPage);
Как видите, прокомментированный раздел - это то, что я пытаюсь сделать, чтобы сгруппировать столбцы, но, похоже, мне не повезло с этим.