查询生成器中的计数问题 Laravel
Difficulties with Count in query builder Laravel
你好,我正在尝试连接我的 4 个 table 以在视图中获取所有必要的信息这 4 个 table 是(我只会放置对这种情况重要的字段):
用户:
ID,
名字
Mentoria(ID_mentor是users.id的外键):
ID,
ID_mentor
Sessao_Mentoria:
ID,
ID_Mentoria
User_Sessao(这是连接用户和Sessao_mentoriatable的枢轴table,所以这里的ID_mentorando是[的外键=32=] 和 id_sessao 是 sessao_mentoria.id 的外键):
ID_Mentorando,
ID_Sessao
使用这个查询我得到了我想要的几乎所有结果
$sessoes= DB::table('sessao_mentoria')
->join('user_sessao', 'user_sessao.id_sessao', '=',
'sessao_mentoria.id')
->join('mentoria','mentoria.id', '=', 'sessao_mentoria.id_mentoria')
->join('users','users.id', '=', 'mentoria.id_mentor')
->select('sessao_mentoria.*','users.name')
->where('user_sessao.id_mentorando',$user->id)
->orderBy('sessao_mentoria.data')
->get();
我可以获取 «Sessao_mentoria table» 中的所有数据,以及连接到每个 «Sessao_mentoria] 的 «Mentor» 的身份),并将其放入按照«数据»
的顺序
但是我还想知道每个 «Sessao_mentoria» 连接了多少 «mentorandos,所以我的计划是在 «user_sessao» table 中添加一个计数,即会让我知道每个 Sessao 中的 «mentorandos» 数量。我试过这样做
$sessoes= DB::table('sessao_mentoria')
->join('user_sessao', 'user_sessao.id_sessao', '=',
'sessao_mentoria.id')
->join('mentoria','mentoria.id', '=', 'sessao_mentoria.id_mentoria')
->join('users','users.id', '=', 'mentoria.id_mentor')
->select('sessao_mentoria.*','users.name', DB::raw('count(*) as sessao_count,
user_sessao.id_mentorando'))
->where('user_sessao.id_mentorando',$user->id)
->groupBy('user_sessao.id_mentorando')
->orderBy('sessao_mentoria.data')
->get();
它只给我 Sessao_Mentoria table 第一行的数据,它给了我 sessao_count 结果,«mentorandos 的总数» 连接到任何 Sessao_mentoria,而不是连接到每个 Sessao 的总数。我也试过用Id_sessao,而不是Id_mentorando来计数,结果是一样的,请问如何解决这个问题呢?提前谢谢你
有人发表评论但将其删除,但我能够及时检查它,并且我按照建议进行操作并将我的组更改为 «Sessao_mentoria.id» 并且成功了!
非常感谢!
你好,我正在尝试连接我的 4 个 table 以在视图中获取所有必要的信息这 4 个 table 是(我只会放置对这种情况重要的字段):
用户: ID, 名字
Mentoria(ID_mentor是users.id的外键): ID, ID_mentor
Sessao_Mentoria: ID, ID_Mentoria
User_Sessao(这是连接用户和Sessao_mentoriatable的枢轴table,所以这里的ID_mentorando是[的外键=32=] 和 id_sessao 是 sessao_mentoria.id 的外键): ID_Mentorando, ID_Sessao
使用这个查询我得到了我想要的几乎所有结果
$sessoes= DB::table('sessao_mentoria')
->join('user_sessao', 'user_sessao.id_sessao', '=',
'sessao_mentoria.id')
->join('mentoria','mentoria.id', '=', 'sessao_mentoria.id_mentoria')
->join('users','users.id', '=', 'mentoria.id_mentor')
->select('sessao_mentoria.*','users.name')
->where('user_sessao.id_mentorando',$user->id)
->orderBy('sessao_mentoria.data')
->get();
我可以获取 «Sessao_mentoria table» 中的所有数据,以及连接到每个 «Sessao_mentoria] 的 «Mentor» 的身份),并将其放入按照«数据»
的顺序但是我还想知道每个 «Sessao_mentoria» 连接了多少 «mentorandos,所以我的计划是在 «user_sessao» table 中添加一个计数,即会让我知道每个 Sessao 中的 «mentorandos» 数量。我试过这样做
$sessoes= DB::table('sessao_mentoria')
->join('user_sessao', 'user_sessao.id_sessao', '=',
'sessao_mentoria.id')
->join('mentoria','mentoria.id', '=', 'sessao_mentoria.id_mentoria')
->join('users','users.id', '=', 'mentoria.id_mentor')
->select('sessao_mentoria.*','users.name', DB::raw('count(*) as sessao_count,
user_sessao.id_mentorando'))
->where('user_sessao.id_mentorando',$user->id)
->groupBy('user_sessao.id_mentorando')
->orderBy('sessao_mentoria.data')
->get();
它只给我 Sessao_Mentoria table 第一行的数据,它给了我 sessao_count 结果,«mentorandos 的总数» 连接到任何 Sessao_mentoria,而不是连接到每个 Sessao 的总数。我也试过用Id_sessao,而不是Id_mentorando来计数,结果是一样的,请问如何解决这个问题呢?提前谢谢你
有人发表评论但将其删除,但我能够及时检查它,并且我按照建议进行操作并将我的组更改为 «Sessao_mentoria.id» 并且成功了! 非常感谢!