私が構築したアプリケーションでエクスポート関数を実装しています。一部の値のみを置換するコレクションを変換
エクスポートプロセスは、モデル値のコレクションを取得し、クライアントにダウンロードされたスプレッドシートにエクスポートします。
私のモデルでは、私はuser_id
とresponsibility
の両方を持っています。これらのフィールドには、ユーザーテーブル(通常は2人の異なるユーザー)にマップされるIDが含まれています。
エクスポート処理中に、user_id
とresponsibility
の値を、ユーザー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
];
});
しかし、これだけ戻り、コレクション内のresponsibility
とuser_id
- ちょうど、これらの値を更新することとは対照的に。
ここでは、残りの列を返す配列に含めることができますが、これは不要なようです。これを行うにはより良い方法があります。
モデルコレクション内の2つの値をユーザーの名前で最も効率的に置き換えるにはどうすればよいですか?
それは今あなたがそのようにそれを置くことをとても簡単ですね! – James