如何使用独特的口才来过滤?

时间:2020-03-12 11:47:57

标签: laravel eloquent laravel-6

想要一些帮助。目前,我有一个包含多个记录的表。

列为:id, identifier, price

我想编写一个查询,我只能以最高的价格获得唯一标识符。

enter image description here

我希望收藏是

[
    [
        'id' => 5,
        'identifier' => 1001
        'price' => 50
    ],
    [
        'id' => 7
        'identifier' => 1002,
        'price' => 35
    ]
]

第一个数组id为5,因为在标识符1001中最高价格为50,id为5,第二个数组id为7,因为标识符1002最高价格为35

3 个答案:

答案 0 :(得分:3)

$maxPrices = Model::select(DB::raw('max(price)'))
             ->groupBy('identifier')->get();

查询结果: [50, 35]

Model::select()->whereIn('price',$maxPrices)->orderBy('price', 'desc')->get()

查询结果

[
    [
        'id' => 5,
        'identifier' => 1001
        'price' => 50
    ],
    [
        'id' => 7
        'identifier' => 1002,
        'price' => 35
    ]
]

答案 1 :(得分:0)

使用它来获取具有最高价格的所有唯一标识符(编辑表):

$products = DB::table('tbl_products')->groupBy('identifier')->get(['identifier', DB::raw('MAX(price) as price')]);

答案 2 :(得分:0)

大家好,找到了更好的解决方案。在数据库视图表上读取。该函数将创建一个具有所需值的虚拟表,在laravel中,您可以创建一个模型来引用该虚拟表并对其进行雄辩的查询。