首页 > 解决方案 > laravel 查询生成器,通过 id 从其他表中获取总和

问题描述

我在数据库中有 2 个表,一个用于用户,另一个用于付款

我的目标是使用查询生成器在 laravel 中让表用户具有支付总和 -> 用户 -> id 的总和

我设法在 datagrip 中进行了这样的成功查询:

SELECT DISTINCT users.id
      , users.name
      , users.email
      , users.address, users.is_admin
      , users.created_at
      , sum(payments.price) as total_purchase
FROM users
LEFT 
JOIN  payments
on users.id = payments.user_id
group 
    by payments.user_id, users.name
order by user_id desc;

我已经在 laravel 中尝试过类似的查询,如下所示:

public function getUsers(){
    $users = DB::table('users')
            ->select(DB::raw('"SELECT DISTINCT users.id, users.name, users.email, users.address, users.is_admin, users.created_at, sum(payments.price) as total_purchase'))
            ->leftJoin('payments', 'users.id', '=', 'payments.user_id')
            ->groupBy('payments.user_id', 'users.name')
            ->orderBy('user_id', 'desc')
            ->paginate(1);

    return $users;
    // return view('adminUsers', ['users' => $users]);
}

但我得到错误:

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;

我怎么能在laravel中做到这一点?我也想用它返回分页

标签: mysqllaravellaravel-query-builder

解决方案


推荐阅读