Laravel选择具有唯一列的行

时间:2019-11-04 16:12:41

标签: php mysql laravel-5

我有一个数据库如下:

id, shop, order_number, Price
1,  google, 11, 20
2,  apple, 12, 20
3, google, 13, 20
4, google, 11, 20,
5, google, 11 , 20

如果我在laraval中使用follow命令:

Order::where('shop','=','google')->orderBy('id','desc')->get()->toArray();

它将完美地向我显示在Google的商店中的搜索结果。

但是,我只想按order_number和shop在Google上返回唯一的结果。它应该返回以下结果:

1,  google, 11, 20
3, google, 13, 20

我尝试使用以下方法:

Order::distinct()->where('shop','=','google')->orderBy('id','desc')->get(['id,shop,order_number,price'])->toArray();

但似乎不起作用。

2 个答案:

答案 0 :(得分:0)

您的语法错误:QueryBuilder get()需要一个列数组,因此应如下所示:

Order::distinct()->where('shop','=','google')->orderBy('id','desc')->get(['id','shop','order_number','price'])->toArray();

答案 1 :(得分:0)

尝试此查询:

Order::distinct()
->select('id','shop','order_number','price') //if you are selecting all column no need to write select
->where('shop','=','google')
->orderBy('id','desc')
->groupBy('order_number')
->get()
->toArray();