Sql 雄辩的总结并获得最新的关系数据

Sql 雄辩的总结并获得最新的关系数据,sql,laravel,postgresql,Sql,Laravel,Postgresql,我有两种型号用户和交易。用户模型与事务具有一对多关系: 我正在尝试返回 用户表中的一些数据 交易表中属于用户的所有金额的总和 来自最近事务的事务哈希 预期响应: { "name": "User A", "image": "images/user-a.png", "last_transaction_hash": "79s8s900", &quo

我有两种型号用户交易。用户模型与事务具有一对多关系:

我正在尝试返回

  • 用户表中的一些数据
  • 交易表中属于用户的所有
    金额的总和
  • 来自最近事务的事务哈希
  • 预期响应:

      {
        "name": "User A",
        "image": "images/user-a.png",
        "last_transaction_hash": "79s8s900",
        "total_transaction_sum": "30000"
      },
      {
        "name": "User B",
        "image": "images/user-b.png",
        "transaction_hash": "a102920",
        "total_transaction_sum": "23000"
      }
    
        $users = User::withCount([
            'transactions as total_transaction_sum' => function ($q) {
                return $q->select(DB::raw("SUM(amount) as amount"));
            },
        ])
            ->orderByRaw('total_transaction_sum DESC NULLS LAST')
            ->get();
    
    我尝试过的:

      {
        "name": "User A",
        "image": "images/user-a.png",
        "last_transaction_hash": "79s8s900",
        "total_transaction_sum": "30000"
      },
      {
        "name": "User B",
        "image": "images/user-b.png",
        "transaction_hash": "a102920",
        "total_transaction_sum": "23000"
      }
    
        $users = User::withCount([
            'transactions as total_transaction_sum' => function ($q) {
                return $q->select(DB::raw("SUM(amount) as amount"));
            },
        ])
            ->orderByRaw('total_transaction_sum DESC NULLS LAST')
            ->get();
    

    通过上面的查询,我可以返回(1和2)的数据,但我发现很难选择我想要查看的特定列,而且我仍然无法确定如何返回最新事务的事务哈希(3)

    您可以使用
    查询生成器
    在这样的排序行中实现这一点

    $users=User::select(\DB::raw('User.name,User.image,SUM(transactions.amount)作为总交易额)
    ->join('transactions','users.id','=','transactions.user_id'))
    ->orderByRaw('total_transaction_sum DESC NULLS LAST')
    ->得到()
    ->groupBy('id'))
    ->映射(函数($row){
    $opt=$row;
    $opt['transaction\u hash']=可选($row->last())->id;
    返回$opt;
    })->值();
    

    参考链接

    谢谢。你知道怎么解3吗?我想从最新的事务中获取信息。最后一个
    事务哈希值
    ?是的,我只想获取最后一个事务哈希值可以让我检查一下我做了一些技巧来获取,你能检查一下吗?或根据您的需要进行修改