首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何只显示每个数据,而不使用不同的laravel重复?

如何只显示每个数据,而不使用不同的laravel重复?
EN

Stack Overflow用户
提问于 2019-10-15 21:06:32
回答 1查看 32关注 0票数 1

我有一个从多个事务中提取id_user的查询。

我只想通过只取每个数据中的1个来查找用户表中的id_user。

示例:在查询中有一个用户id 1,1,3,4

我只想用1,3,4

所以出来的名字只来自id_user 1,3,4而不是1,1,3,4

我尝试过使用独特的、截然不同的功能,但是数据被重复了几次

这是我的代码:

代码语言:javascript
复制
$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'));

            }

这是我的JSON结果:

代码语言:javascript
复制
listuser: [
            {},
            {},
            {}
       ]

对我的问题有什么建议吗?非常感谢

EN

回答 1

Stack Overflow用户

发布于 2019-10-16 17:14:27

我已经用修改和注释重写了你的代码。

代码语言:javascript
复制
$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();

此解决方案将解决您的问题,并返回唯一的结果。它还将提高代码的性能(&T)。

(重要说明:尽量不要将查询放入循环中。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58395473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档