在Laravel中使用foreach:删除相同的值

时间:2018-08-24 01:05:38

标签: php laravel laravel-5 eloquent

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

我有下一个代码:

    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在所有情况下都带有'----',最后一个值除外

2 个答案:

答案 0 :(得分:1)

@侯赛因是对的,请按共同的专栏分组,不要做一个foreach。让Eloquent DB做繁重的工作。请注意您在其中包含第二个表的回调。

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

答案 1 :(得分:1)

您可以尝试收集unique()方法。

  

https://laravel.com/docs/master/collections#method-unique