Как я могу сгруппировать несколько столбцов в объект при выполнении вызова базы данных в Laravel? - PullRequest
0 голосов
/ 25 ноября 2018

Допустим, я выбираю пользователей

У каждого пользователя есть 10 столбцов, связанных с ним

Как я могу сгруппировать 5 столбцов в один объект для каждого пользователя, чтобы мне было легче сопоставлять ихс javascript?

Я мог бы сделать

foreach ($users as $user)
{
   $user['new_object']['col_1'] = $user->col_1;
   unset($user->col_1);
   $user['new_object']['col_2'] = $user->col_2;
   // etc 
}

Но наверняка есть способ сгруппировать столбцы в объект на Laravel?

Например, что-то вроде

$users = User::where('verified', 1)
             ->group('new_object', ['col_1', 'col_2', 'col_3']),
             ->get();

Или я могу обновить мою модель пользователя, чтобы сделать это?

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018

Вы можете использовать мутаторы в вашей модели:

public function getNewObjAttribute() {
    return [
        $this->col1,
        $this->col2,
        $this->col3,
    ];
}

И в атрибуте $appends внутри этой модели:

protected $appends = [
    'new_obj',
];
0 голосов
/ 25 ноября 2018

вы можете сделать что-то вроде этого:

$users = User::where('verified', 1)->get()->map(function($row)
{
    $row->new_obj = [$row->col1, $row->col2, $row->col3];
    unset($row->col1, $row->col2, $row->col3);
    return $row;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...