在laravel中使用distinct与多个列

时间:2017-06-06 05:58:33

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

我的表格结构如下

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的{​​{1}}个相同的内容

5 个答案:

答案 0 :(得分:3)

每当我们有多个行具有相同的数据需要在最终输出中合并时,我们使用分组 mySQL 的功能。

因此,在您的情况下,您可以使用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表格&amp;然后获取我们提供的列,即date, seller and sum of total column as total

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

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

答案 1 :(得分:2)

你可以尝试

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

答案 2 :(得分:0)

您应该使用高级搜索查询。 Here,这可能会对您有所帮助

答案 3 :(得分:0)

$search = $request->search;

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

       return $produtcSearch;

答案 4 :(得分:0)

你可以像这样使用不同的多列(在 Laravel 8 中检查过)。

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