2017-04-08 1 views
0

Ich habe Probleme beim Erstellen einer Funktion auf Sammlung Karte mit Rückgabewerten.Laravel 5.4 Collection Map Rückgabewerte

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); 


    } 

Wie Sie sehen können, ist das RückgabefeldNames [0] fest codiert. Ich weiß nicht, wie viele fieldNames es erhalten wird. Ich muss diese Feldnamen mit verschleierter ID zurückgeben. Also im Grunde ist nur die ID geändert. Hier ist der Screenshot.

enter image description here

Wie Sie die Feldnamen sehen können, sind nur 2, aber was, wenn es 5 oder 6 wird, weiß ich nicht wirklich, wie viele Flurnamen sie im Parameter übergeben werden. Wie kann ich es zurückgeben? Vielen Dank.

Antwort

0

Falls jemand dieses Problem auftritt. Hier ist meine Lösung ...

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); 


    } 

Das Ergebnis ist das gleiche. GENIAL!