在 laravel 中对多列使用 distinct
Posted
技术标签:
【中文标题】在 laravel 中对多列使用 distinct【英文标题】:use distinct with multiple columns in laravel 【发布时间】: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
abc
在date
05-06-2017
的表中有两个条目,所以我需要当天的total
用于seller
abc
以及pqr
第二个date
的相同内容seller
【问题讨论】:
请详细描述您需要的数据。最后一行很难理解。 【参考方案1】:当我们有多个包含相同数据的行需要在最终输出中合并在一起时,我们会使用 mySQL 的 group 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();
【讨论】:
以上是关于在 laravel 中对多列使用 distinct的主要内容,如果未能解决你的问题,请参考以下文章