Php 如何在Laravel中获取联接查询中的计数
我想将下面的SQL转换为LaravelPhp 如何在Laravel中获取联接查询中的计数,php,mysql,laravel,laravel-5.7,Php,Mysql,Laravel,Laravel 5.7,我想将下面的SQL转换为Laravel 选择COUNT('uc.*)作为倒计时,bs.brand\u name 来自uc的“用户活动” 在uc.brand_id=bs.id上以bs的身份加入品牌 按uc.brand_id分组 按倒计时说明订购 限制5 但在这样做时: $top\u donwload\u list=DB::table('user\u activities')) ->leftJoin('brands'、'brands.id'、'='、'user\u activities.brand
选择COUNT('uc.*)作为倒计时,bs.brand\u name
来自uc的“用户活动”
在uc.brand_id=bs.id上以bs的身份加入品牌
按uc.brand_id分组
按倒计时说明订购
限制5
但在这样做时:
$top\u donwload\u list=DB::table('user\u activities'))
->leftJoin('brands'、'brands.id'、'='、'user\u activities.brand\u id')
->选择raw('brands.*,brands.brand\u name,brands.id,count(用户\u活动.操作\u类型)作为用户\u活动计数')
->groupBy('user\u activities.brand\u id')
->get();
我得到这个错误:
SQLSTATE[42000]:语法错误或访问冲突:1055“colorworld.brands.id”不在分组依据中(SQL:select brands.*,brands.brand\u name,brands.id,count(user\u activities.action\u type)as用户活动从user\u activities
left加入brands
onbrands
id
=user\u activities
brand\u id
按用户活动分组
我试图在database.php
中设置'strict'=>true
,但在Laravel 5.7中得到了相同的错误
更新:-数据库表
如果我正确理解了您的问题,您正在尝试查找按品牌名称分组的用户活动计数。此外,您还希望按用户活动最多的记录排序前5名记录
因此,以下措施应该有效:
$top_donwload_list = DB::table('user_activities')
->selectRaw("brands.brand_name, COUNT('user_activities.*') as user_activitiesCount")
->join('brands', 'brands.id', '=', 'user_activities.brand_id')
->groupBy('brands.brand_name')
->orderBy('user_activitiesCount', 'desc')
->take(5)
->get();
如果我正确理解了您的问题,那么您正在尝试查找按品牌名称分组的用户活动数。此外,您还希望按用户活动最多的记录排序前5名记录
因此,以下措施应该有效:
$top_donwload_list = DB::table('user_activities')
->selectRaw("brands.brand_name, COUNT('user_activities.*') as user_activitiesCount")
->join('brands', 'brands.id', '=', 'user_activities.brand_id')
->groupBy('brands.brand_name')
->orderBy('user_activitiesCount', 'desc')
->take(5)
->get();
你可以用拉威尔的口才。我假设品牌和用户活动之间的关系是一对多的,在这里,“品牌”是品牌实体的模型
$count = Brand::leftJoin
('user_activities', function($join_brands){
$join_brands-> on
('brands.id', '=','user_activity.brand_id');
)->orderBy('user_activities.count_down','desc ')
->groupBy('user_activities.brand_id')->count();
你可以用拉威尔的口才。我假设品牌和用户活动之间的关系是一对多的,在这里,“品牌”是品牌实体的模型
$count = Brand::leftJoin
('user_activities', function($join_brands){
$join_brands-> on
('brands.id', '=','user_activity.brand_id');
)->orderBy('user_activities.count_down','desc ')
->groupBy('user_activities.brand_id')->count();
是的,你说得对。但此查询不起作用,出现错误“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请检查与您的MariaDB服务器版本相对应的手册,以了解将“*)附近的语法用作用户活动从第1行的user\u activities
internal joinbrands
onbrands(SQL:select brands.name,COUNT(user\u activities.*))中的用户活动计数作为用户活动计数从user\u activities`internal joinbrands
onbrands
id
user\u activities
id
group bybrands
name
order byuser\u activities count
desc limit 5)“将您的answare“brand.name”更新为“brand.brand\u name”是,你说得对。但此查询不起作用,出现错误“SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请检查与您的MariaDB服务器版本相对应的手册,以了解将“*)附近的语法用作用户活动从第1行的user\u activities
internal joinbrands
onbrands(SQL:select brands.name,COUNT(user\u activities.*))中的用户活动计数作为用户活动计数从user\u activities`internal joinbrands
onbrands
id
user\u activities
id
group bybrands
name
order byuser\u activities count
desc limit 5)“将您的answare“brand.name”更新为“brand.brand\u name”请添加正确答案。请添加正确答案。