Json 如何仅显示每一个数据而不重复使用不同的laravel?
我有一个从多个事务中获取id_用户的查询 我只想通过只获取每个数据中的1个,在用户表中找到id_用户 例如: 查询中有一个用户id[1,1,3,4] 我只想拿[1,3,4] 因此,出现的名称仅来自id_用户[1,3,4],而不是[1,1,3,4] 我曾尝试使用独特和独特的功能,但数据重复了好几次 这是我的代码:Json 如何仅显示每一个数据而不重复使用不同的laravel?,json,laravel,eloquent,distinct,laravel-5.8,Json,Laravel,Eloquent,Distinct,Laravel 5.8,我有一个从多个事务中获取id_用户的查询 我只想通过只获取每个数据中的1个,在用户表中找到id_用户 例如: 查询中有一个用户id[1,1,3,4] 我只想拿[1,3,4] 因此,出现的名称仅来自id_用户[1,3,4],而不是[1,1,3,4] 我曾尝试使用独特和独特的功能,但数据重复了好几次 这是我的代码: $arrayDiff = []; $totalMasing = []; $listuser = []; if ($totalSubmit
$arrayDiff = [];
$totalMasing = [];
$listuser = [];
if ($totalSubmitted == 1) {
for ($i = 0; $i < $totalSubmitted; $i++) {
$item = $subset[$i]['id_okr'];
$arrayDiff[] = Okr::find($item)->get();
$totalMasing[] = Interact::where('id_created', '=', $arrayDiff[0][$i]['id_created'])
->where('status', '=', '2')
->where('id_user', '=', $interact)
->count();
$listuser[] = User::find($arrayDiff[0][$i]['id_created']);
}
}else{
for ($i = 1; $i < $totalSubmitted; $i++) {
$item = $subset[$i]['id_okr'];
$arrayDiff[] = Okr::find($item)->get();
$totalMasing[] = Interact::where('id_created', '=', $arrayDiff[0][$i]['id_created'])
->where('status', '=', '2')
->where('id_user', '=', $interact)
->count();
$listuser[] = User::find($arrayDiff[0][$i]['id_created']->distinct('id_created'));
}
对我的问题有什么建议吗?非常感谢我已经用更改和注释重新编写了您的代码
$arrayDiff = [];
$totalMasing = [];
$listuser = [];
$listuserids = [];
if ($totalSubmitted == 1) {
for ($i = 0; $i < $totalSubmitted; $i++) {
$item = $subset[$i]['id_okr'];
$arrayDiff[] = Okr::find($item)->get();
$totalMasing[] = Interact::where('id_created', '=', $arrayDiff[0][$i]['id_created'])->where('status', '=', '2')->where('id_user', '=', $interact)->count();
$listuserids[] = $arrayDiff[0][$i]['id_created']; // add this line
//$listuser[] = User::find($arrayDiff[0][$i]['id_created']); // remove this line
}
} else {
for ($i = 1; $i < $totalSubmitted; $i++) {
$item = $subset[$i]['id_okr'];
$arrayDiff[] = Okr::find($item)->get();
$totalMasing[] = Interact::where('id_created', '=', $arrayDiff[0][$i]['id_created'])->where('status', '=', '2')->where('id_user', '=', $interact)->count();
$listuserids[] = $arrayDiff[0][$i]['id_created']; // add this line
//$listuser[] = User::find($arrayDiff[0][$i]['id_created'])->distinct('id_created')); // remove this line
}
}
// and place query outside of loop!
$listuser[] = User::whereIn('id', $listuserids)->get();
$arrayDiff=[];
$totalMasing=[];
$listuser=[];
$listuserids=[];
如果($totalSubmitted==1){
对于($i=0;$i<$totalSubmitted;$i++){
$item=$subset[$i]['id_okr'];
$arrayDiff[]=Okr::find($item)->get();
$totalMasing[]=Interact::where('id_-created'、'='、$arrayDiff[0][$i]['id_-created'])->where('status'、'='、'2')->where('id_-user'、'='、$Interact)->count();
$listuserids[]=$arrayDiff[0][$i]['id_created']];//添加此行
//$listuser[]=User::find($arrayDiff[0][$i]['id\u created']);//删除此行
}
}否则{
对于($i=1;$i<$totalSubmitted;$i++){
$item=$subset[$i]['id_okr'];
$arrayDiff[]=Okr::find($item)->get();
$totalMasing[]=Interact::where('id_-created'、'='、$arrayDiff[0][$i]['id_-created'])->where('status'、'='、'2')->where('id_-user'、'='、$Interact)->count();
$listuserids[]=$arrayDiff[0][$i]['id_created']];//添加此行
//$listuser[]=User::find($arrayDiff[0][$i]['id\u created'])->distinct('id\u created');//删除此行
}
}
//并将查询置于循环之外!
$listuser[]=User::其中('id',$listuserids)->get();
此解决方案将解决您的问题,并只返回唯一的结果它还将提高代码的性能
(重要提示:尽量不要将查询放入循环。)
我已经用更改和注释重新编写了您的代码
$arrayDiff = [];
$totalMasing = [];
$listuser = [];
$listuserids = [];
if ($totalSubmitted == 1) {
for ($i = 0; $i < $totalSubmitted; $i++) {
$item = $subset[$i]['id_okr'];
$arrayDiff[] = Okr::find($item)->get();
$totalMasing[] = Interact::where('id_created', '=', $arrayDiff[0][$i]['id_created'])->where('status', '=', '2')->where('id_user', '=', $interact)->count();
$listuserids[] = $arrayDiff[0][$i]['id_created']; // add this line
//$listuser[] = User::find($arrayDiff[0][$i]['id_created']); // remove this line
}
} else {
for ($i = 1; $i < $totalSubmitted; $i++) {
$item = $subset[$i]['id_okr'];
$arrayDiff[] = Okr::find($item)->get();
$totalMasing[] = Interact::where('id_created', '=', $arrayDiff[0][$i]['id_created'])->where('status', '=', '2')->where('id_user', '=', $interact)->count();
$listuserids[] = $arrayDiff[0][$i]['id_created']; // add this line
//$listuser[] = User::find($arrayDiff[0][$i]['id_created'])->distinct('id_created')); // remove this line
}
}
// and place query outside of loop!
$listuser[] = User::whereIn('id', $listuserids)->get();
$arrayDiff=[];
$totalMasing=[];
$listuser=[];
$listuserids=[];
如果($totalSubmitted==1){
对于($i=0;$i<$totalSubmitted;$i++){
$item=$subset[$i]['id_okr'];
$arrayDiff[]=Okr::find($item)->get();
$totalMasing[]=Interact::where('id_-created'、'='、$arrayDiff[0][$i]['id_-created'])->where('status'、'='、'2')->where('id_-user'、'='、$Interact)->count();
$listuserids[]=$arrayDiff[0][$i]['id_created']];//添加此行
//$listuser[]=User::find($arrayDiff[0][$i]['id\u created']);//删除此行
}
}否则{
对于($i=1;$i<$totalSubmitted;$i++){
$item=$subset[$i]['id_okr'];
$arrayDiff[]=Okr::find($item)->get();
$totalMasing[]=Interact::where('id_-created'、'='、$arrayDiff[0][$i]['id_-created'])->where('status'、'='、'2')->where('id_-user'、'='、$Interact)->count();
$listuserids[]=$arrayDiff[0][$i]['id_created']];//添加此行
//$listuser[]=User::find($arrayDiff[0][$i]['id\u created'])->distinct('id\u created');//删除此行
}
}
//并将查询置于循环之外!
$listuser[]=User::其中('id',$listuserids)->get();
此解决方案将解决您的问题,并只返回唯一的结果它还将提高代码的性能
(重要提示:尽量不要将查询放入循环。)