src/Serializer/ModelSerializer.php
private function expand(Model $model, array $result, array $namedExc, array $namedInc, array $namedExp)
    {
        foreach ($namedExp as $k => $subExp) {
            $value = array_value($result, $k);
            if (!$this->isExpandable($model, $k, $value)) {
                continue;
            }

            $subExc = array_value($namedExc, $k);
            $subInc = array_value($namedInc, $k);

            // convert exclude, include, and expand into dot notation
            // then take the keys for a flattened dot notation
            $flatExc = is_array($subExc) ? array_keys(array_dot($subExc)) : [];
            $flatInc = is_array($subInc) ? array_keys(array_dot($subInc)) : [];
            $flatExp = is_array($subExp) ? array_keys(array_dot($subExp)) : [];

            $relation = $model->relation($k);
            $serializer = new self($this->request);
            $serializer->setExclude($flatExc)
                       ->setInclude($flatInc)
                       ->setExpand($flatExp);

            if ($relation instanceof Model) {
                $result[$k] = $serializer->toArray($relation);
            } else {
                $result[$k] = $relation;
            }
        }

        return $result;
    }
private function expand(Model $model, array $result, array $namedExc, array $namedInc, array $namedExp)
    {
        foreach ($namedExp as $k => $subExp) {
            $value = array_value($result, $k);
            if (!$this->isExpandable($model, $k, $value)) {
                continue;
            }

            $subExc = array_value($namedExc, $k);
            $subInc = array_value($namedInc, $k);

            // convert exclude, include, and expand into dot notation
            // then take the keys for a flattened dot notation
            $flatExc = is_array($subExc) ? array_keys(array_dot($subExc)) : [];
            $flatInc = is_array($subInc) ? array_keys(array_dot($subInc)) : [];
            $flatExp = is_array($subExp) ? array_keys(array_dot($subExp)) : [];

            $relation = $model->relation($k);
            $serializer = new self($this->request);
            $serializer->setExclude($flatExc)
                       ->setInclude($flatInc)
                       ->setExpand($flatExp);

            if ($relation instanceof Model) {
                $result[$k] = $serializer->toArray($relation);
            } else {
                $result[$k] = $relation;
            }
        }

        return $result;
    }
private function expand ( Model $ model , array $ result , array $ namedExc , array $ namedInc , array $ namedExp ) { foreach ( $ namedExp as $ k => $ subExp ) { $ value = array_value ( $ result , $ k ) ; if ( ! $ this -> isExpandable ( $ model , $ k , $ value ) ) { continue ; } $ subExc = array_value ( $ namedExc , $ k ) ; $ subInc = array_value ( $ namedInc , $ k ) ; // convert exclude, include, and expand into dot notation // then take the keys for a flattened dot notation $ flatExc = is_array ( $ subExc ) ? array_keys ( array_dot ( $ subExc ) ) : [ ] ; $ flatInc = is_array ( $ subInc ) ? array_keys ( array_dot ( $ subInc ) ) : [ ] ; $ flatExp = is_array ( $ subExp ) ? array_keys ( array_dot ( $ subExp ) ) : [ ] ; $ relation = $ model -> relation ( $ k ) ; $ serializer = new self ( $ this -> request ) ; $ serializer -> setExclude ( $ flatExc ) -> setInclude ( $ flatInc ) -> setExpand ( $ flatExp ) ; if ( $ relation instanceof Model ) { $ result [ $ k ] = $ serializer -> toArray ( $ relation ) ; } else { $ result [ $ k ] = $ relation ; } } return $ result ; }
Expands any relational properties within a result.

@param array $model
@param array $result
@param array $namedExc
@param array $namedInc
@param array $namedExp

@return array
Expands any relational properties within a result .