在laravel中对多列使用distinct

i7uq4tfw  于 2023-01-10  发布在  其他
关注(0)|答案(4)|浏览(113)

我的表结构如下

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'

我需要数据库中的日期方面的数据。sellerabcdate05-06-2017的表中有两个条目,因此我需要sellerabc当天的total以及pqr,对于所有seller的第二个date,相同的事情

fd3cxomn

fd3cxomn1#

每当我们有多行相同的数据需要在最终输出中合并在一起时,我们就使用mySQLgroup by功能。
因此,在您情况下,您可以使用laravel查询构建器以这种方式完成此操作。

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

DB::table('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();我们正在从查询中获取数据。

1u4esq0p

1u4esq0p2#

你可以试试

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

nlejzf6q3#

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

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

n6lpvg4x4#

$search = $request->search;

    $productSearch = Product::where('title', 'LIKE', '%'.$search.'%')
                    ->orWhere('description', 'LIKE', '%'.$search.'%')
                    ->get();

       return $produtcSearch;

相关问题