Json 如何仅显示每一个数据而不重复使用不同的laravel?

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

我有一个从多个事务中获取id_用户的查询

我只想通过只获取每个数据中的1个,在用户表中找到id_用户

例如: 查询中有一个用户id[1,1,3,4]

我只想拿[1,3,4]

因此,出现的名称仅来自id_用户[1,3,4],而不是[1,1,3,4]

我曾尝试使用独特和独特的功能,但数据重复了好几次

这是我的代码:

$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();
此解决方案将解决您的问题,并只返回唯一的结果它还将提高代码的性能

(重要提示:尽量不要将查询放入循环。)