Laravel:列中使用的最高ID

时间:2016-07-17 08:35:31

标签: php mysql laravel laravel-5 eloquent

我有一个表gifts_sent,其中包含一个模型GiftSent,并且包含以下列。

idgift_idsender_idreceiver_id

注意:sender_idreceiver_id是外键。

假设身份1的用户已发送了11份礼物,身份2的用户已向其他用户发送了9份礼物等等。

如何使用laravel eloquent或query builder实现这一目标?

注意:它用于排名,即用户发送了大部分礼物。

我提出了以下逻辑,但不正确。

App\User::join('gift_sents', function($builder){
    $builder->on('gift_sents.receiver_id', '=', 'users.id');
    })
    ->select('users.*', DB::raw('COUNT(gift_sents.receiver_id) as total_posts'))
    ->groupBy('gift_sents.id')
    ->orderBy('total_posts', 'ASC')
    ->limit(3)->get();

1 个答案:

答案 0 :(得分:0)

首先,您必须定义与User和GiftSent模型的关系。 获取已发送最大礼品数量的sender_id。使用关系('with')获取所有用户。

App\GiftSent::with('userRelationName')
->select('sender_id', DB::raw('COUNT(*) as giftCount'))
->groupBy('sender_id')
->orderBy(DB::raw('COUNT(*)'))
->get();

其他解决方案是使用连接,但这将是复杂和昂贵的。