2017-10-29 47 views
0

我在构建的应用程序中实现导出功能。转换集合以仅替换一些值

导出过程获取模型值的集合,然后将其导出到下载到客户端的电子表格中。

在我的模型上,我有一个user_idresponsibility。这两个字段都包含一个映射回我的用户表的ID(通常是两个不同的用户)。

在导出过程中,我想将user_idresponsibility值替换为实际用户的名称,而不是其用户ID。

map()transform()似乎是正确的方法来实现我所追求的,但我看不到一个优雅的方式来实现我想要的。

这是我到目前为止有:

$forms = Form::where('created_at', '>=', (new Carbon('first day of last month'))->toDateString()) 
         ->where('created_at', '<=', (new Carbon('last day of last month'))->toDateString()) 
         ->get(); 

$forms->transform(function($form) { 
    return [ 
     'responsibility' => is_null($form->responsibility) ? $form->responsibility : $form->personResponsible->name, 
     'user_id' => $form->user->name 
    ]; 
}); 

然而,这只是返回集合中responsibilityuser_id - 而不是仅仅更新这些值。

现在,我可以只包括返回数组中的其余列,但这似乎没有必要 - 当然有更好的方法来做到这一点。

如何将我的模型集合中的两个值与用户名最有效地替换?

回答

1

只需修改要变换并返回$表型号的valules:

$forms->transform(function($form) { 
     $form->responsibility = is_null($form->responsibility) ? $form->responsibility : $form->personResponsible->name; 
     $form->user_id = $form->user->name; 
     return $form; 
    }); 
+0

现在你把它像看起来那么简单! – James