首页 > 解决方案 > 在 Laravel 中使用 foreach:删除相同的值

问题描述

我找到了删除结果中重复值的方法,但它不能正常工作。如何解决?

我有下一个代码:

    public function getListPositionByApplication($app_id){
    // $app_id = \Request::input('app_id');
    $list = SparePartApplicationPositionProvider::where('app_id',$app_id)->with(['provider','application_position'])->orderBy('apos_id')
            ->get();
            $aa=0;
            foreach ($list as $value) {
                if($value->apos_id==$aa){
                    $value->application_position->name_detail='----';
                }
                $aa = $value->apos_id;
                 Log::info($value->apos_id);
            }

    return $list;
}

Log::info 给出下一个信息:26,26,26,26,26,26,27,27,27,27,27,27,28 但 $value->application_position->name_detail 有 '----' in除最后一个值外的所有情况

标签: phplaravellaravel-5eloquent

解决方案


@Hussein 是对的,按公共列分组,不要做 foreach。让 Eloquent DB 完成繁重的工作。请注意包含第二个表的回调。

    $list = SparePartApplicationPositionProvider::where('app_id',$app_id)
->with(['provider','application_position' => function ($query){
    $query->groupBy('name_detail');
    }])
->orderBy('apos_id')
->get();

推荐阅读