Closed1
laravel9¦collectionのgroupByで複数の条件を掛け合わせて使う方法
やりたいこと
collectionのgroupByを複数使う方法です。
Laravelのwithで複数のリレーション先の情報を取得し、複数のリレーション先を掛け合わせたgroupBy
をしたい。
環境
- PHP: 8.1
- Laravel: 9
結論
User::with(['team', 'task', 'task.histories'])
->get()
->groupBy(function ($item, $key) {
return $item->team->name . ' ' . $item->task->histories->first()->name;
});
リレーションが1対多でリレーション先のテーブルが多の時は注意が必要
1つのテーブルver
User::get()
->groupBy(function ($item, $key) {
return $item->company_id . ' ' . $item->team_id;
});
このスクラップは2023/02/09にクローズされました