假设我要获取用户
每个用户都有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();
或者我可以通过某种方式来更新我的用户模型吗?
答案 0 :(得分:2)
您可以执行以下操作:
$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;
});
答案 1 :(得分:1)
您可以在模型中使用变体:
public function getNewObjAttribute() {
return [
$this->col1,
$this->col2,
$this->col3,
];
}
并在该模型的$appends
属性中:
protected $appends = [
'new_obj',
];