【问题标题】:use distinct with multiple columns in laravel在 laravel 中对多列使用 distinct
【发布时间】:2017-11-07 00:26:48
【问题描述】:

我的表结构如下

date        seller  unit    price   total
05-06-17    abc     14      700     9800
05-06-17    pqr     12      600     7200
05-06-17    abc     10      520     5200
06-06-17    abc     10      600     6000
06-06-17    pqr     15      520     7800
06-06-17    pqr     16      520     8320

我需要获取类似的记录

1) 'date' = '05-06-2017', 'seller' = 'abc', 'total' = '15000'
2) 'date' = '05-06-2017', 'seller' = 'pqr', 'total' = '7200'
3) 'date' = '06-06-2017', 'seller' = 'abc', 'total' = '6000'
4) 'date' = '06-06-2017', 'seller' = 'pqr', 'total' = '16120'

我需要按日期从数据库中获取数据。 seller abcdate 05-06-2017 的表中有两个条目,所以我需要当天的total 用于seller abc 以及pqr 第二个date 的相同内容seller

【问题讨论】:

  • 请详细描述您需要的数据。最后一行很难理解。

标签: laravel laravel-5.3 laravel-eloquent laravel-query-builder


【解决方案1】:

当我们有多个包含相同数据的行需要在最终输出中合并在一起时,我们会使用 mySQLgroup by 功能。

所以在您的情况下,您可以使用 laravel 查询构建器以这种方式执行此操作。

 DB::table('orders')->select('date', 'seller', DB::raw('SUM(total) as total'))
    ->groupBy('seller')
    ->groupBy('date')
    ->get();

说明

DB::select('orders')->select('date', 'seller', DB::raw('SUM(total) as total')) 将查询我们数据库中的orders 表,然后获取我们提供的列,即date, seller and sum of total column as total

->groupBy('seller')->groupBy('date')会合并同一卖家在同一日期的多条记录。

->get(); 我们正在从查询中获取数据。

【讨论】:

    【解决方案2】:

    你可以试试

    DB::table('orders')
        ->select('date', 'seller', DB::raw('SUM(total)'))
        ->groupBy('date')
        ->groupBy('seller')
        ->get();
    

    【讨论】:

      【解决方案3】:
      $search = $request->search;
      
          $productSearch = Product::where('title', 'LIKE', '%'.$search.'%')
                          ->orWhere('description', 'LIKE', '%'.$search.'%')
                          ->get();
      
             return $produtcSearch;
      

      【讨论】:

      • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的回答添加解释并说明适用的限制和假设。
      【解决方案4】:

      您可以像这样对多个列使用 distinct(在 Laravel 8 中检查过)。

      Product::where('column_name','=', $searchTerm)
      ->distinct('column1','column2')
      ->get();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-24
        • 2019-08-06
        • 1970-01-01
        • 1970-01-01
        • 2013-05-30
        • 2019-11-16
        • 2021-09-29
        • 1970-01-01
        相关资源
        最近更新 更多