Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:列中使用的最高id_Php_Mysql_Laravel_Laravel 5_Eloquent - Fatal编程技术网

Php Laravel:列中使用的最高id

Php Laravel:列中使用的最高id,php,mysql,laravel,laravel-5,eloquent,Php,Mysql,Laravel,Laravel 5,Eloquent,我有一个表gifts\u sent,其中有一个模型GiftSent,并有以下列 id,gift\u id,sender\u id,receiver\u id 注意:sender\u id和receiver\u id是外键 假设id1的用户为其他用户发送了11份礼物,id2的用户为其他用户发送了9份礼物,依此类推 我如何使用laravel eloquent或query builder实现这一点 注:排名是指哪位用户送出的礼物最多 我提出了以下逻辑,但它不正确 App\User::join('gif

我有一个表
gifts\u sent
,其中有一个模型
GiftSent
,并有以下列

id
gift\u id
sender\u id
receiver\u id

注意:
sender\u id
receiver\u id
是外键

假设id
1
的用户为其他用户发送了11份礼物,id
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();

首先,您必须定义与用户和礼品模型的关系。 获取发送最多数量礼物的发件人id。使用关系('with')获取所有用户


另一个解决方案是使用join,但这将是复杂和昂贵的。

首先,您必须定义与用户和礼品模型的关系。 获取发送最多数量礼物的发件人id。使用关系('with')获取所有用户


另一种解决方案是使用join,但它将非常复杂和昂贵。

查询本身可以是
选择发送者id,SUM(*),由发送者id顺序从my_表组按sent DESC LIMIT 1发送,但这不会考虑关系。查询本身可以是
选择发送者id,SUM(*)由发件人从my_table组发送\u id订单由sent DESC LIMIT 1发送
-虽然这不包括领带。谢谢,伙计,但您的查询有错误!请看一看谢谢,但是你的查询有错误!请看一看
App\GiftSent::with('userRelationName')
->select('sender_id', DB::raw('COUNT(*) as giftCount'))
->groupBy('sender_id')
->orderBy(DB::raw('COUNT(*)'))
->get();