Как сделать вывод из базы данных без дублей?

У меня есть запрос к бд в котором я хочу чтоб выводились данные из базы общей суммы пополнений каждого пользователя в общей сумме но мой код выводит данные в таком виде:
Name1 | 589
Name2 | 555
Name1 | 589
Name3 | 999
Name1 | 589
Тоесть дублируются пользователи
Вот сам контроллер
public function payments()
	{
		$a = \DB::table('payments')->orderBy('amount', 'desc')->where('status', 1)->take(100)->get();
		foreach ($a as $b) {
			$u = User::find($b->user_id);
			$b->name = $u->name;
			$b->name_id = $u->id;
     $b->amount = \DB::table('payments')->take(100)->where('user_id', $b->name_id)->where('status', 1)->sum('amount', $b->name_id);
		}
		return view('admin.pages.payments', compact('a'));
	}
  • Вопрос задан
  • 454 просмотра
Пригласить эксперта
Ответы на вопрос 2
@Ordec
Нужно использовать GROUP BY вместе с SUM

mysql: SELECT name, SUM(amount) from payments GROUP BY name;
laravel: DB::table('payments')->select('name', DB::raw('SUM(amount)'))
                ->groupBy('name')
                ->get();


рекомендую поучить сначала сам mysql, а затем смотреть в документ и искать что вам нужно.
Ответ написан
Комментировать
@Alex2412729 Автор вопроса
Решил проблему добавив distinct

$a = \DB::table('payments')->orderBy('amount', 'desc')->where('status', 1)->take(100)->distinct()->get(['user_id']);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы