2017-10-29 49 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