Laravel 5.4集合地图返回值

时间:2017-04-08 21:35:54

标签: laravel optimus

我在使用返回值在集合地图上创建函数时遇到了问题。

public function getCollectionFakeId($collection, $fieldNames){

        $optimus = $this->optimus;

        $result = $collection->map(function($item, $key) use ($optimus, $fieldNames) {

                return [
                    $fieldNames[0] =>$optimus->encode($item->id),
                    $fieldNames[1] => $item->lastname
                ];


        }) ;

        dd($result);
        return  json_decode(json_encode($result), FALSE);


    }

正如您所看到的,返回fieldNames [0]正在被硬编码。我不知道会收到多少fieldNames。我需要用模糊的Id返回那些字段名。所以基本上唯一改变的是Id。这是截图。

enter image description here

正如你所看到的,fieldNames只有2,但如果它变为5或6,我真的不知道它们将在参数中传递多少个fieldNames。我怎么能退货呢感谢。

1 个答案:

答案 0 :(得分:0)

万一有人会遇到这个问题。这是我的解决方案......

public function getCollectionFakeId($collection, $fieldNames){

        $optimus = $this->optimus;

        $result = $collection->map(function($item, $key) use ($optimus, $fieldNames) {

                $mapFieldNames = array_map(function($v) use ($optimus, $item) {
                    if( $v == 'id'){
                        return $optimus->encode($item->id);
                    }
                    else{
                        return $v;
                    }
                }, $fieldNames);

               return $mapFieldNames;
        }) ;

        dd($result);
        return  json_decode(json_encode($result), FALSE);


    }

结果是一样的。真棒!