id sm_id to_id
1 3 2
2 4 1
3 3 3
4 3 2
5 3 3
6 4 1
如何计算to_id
和sm_id
的出现次数?
我有两个输入,第一个sm_id
和第二个to_id
,我想根据输入计算值的出现。
sm_id = 4 and to_id = 1
的预期结果为2
这是我试过的代码
$us = \DB::table('mgs')
->where('sm_id', '=', DB::raw('to_id'))
->where('to_id', '=', DB::raw('sm_id'))
->groupBy('sm_id')
->count();
print_r($us);die;
答案 0 :(得分:2)
如果您想计算表格中给定sm_id
和to_id
的消息数量,请执行以下操作:
\DB::table('msg')->where('sm_id', $smId)->where('to_id', $toId)->count();
答案 1 :(得分:0)
试试这个:
$us = \DB::table('mgs')
->where('sm_id', '=', DB::raw('to_id'))
->where('to_id', '=', DB::raw('sm_id'))
->groupBy('sm_id', 'to_id')
->count('sm_id', 'to_id');
print_r($us);die;
答案 2 :(得分:-1)
如果您有$sm_id
和$to_id
作为输入,那么您在使用DB::raw
时不需要使用Laravel query builder
,因此它会处理 SQL注射强>:
$us = \DB::table('mgs')->where(['sm_id'=>$sm_id,'to_id'=>$to_id])->count();
dd($us);
dd()
是laravel的方法,代表转储和死亡,因此您无需单独使用print_r
和die
。
PS。我已经使用了您脚本中的\DB
,但我建议您使用:Illuminate\Support\Facades\DB
。