[Vuejs]-Filter a value in all properties with Laravel

0👍

For now I’m going to use the route over converting to json. However, I found a way to not to parse json by regular expressions. Instead, I convert the jsonified collection back to php objects. With them I’m able to reimplement the functions from above:

private function eachRecursive(stdClass $obj, string $localfilter) {
    foreach($obj as $key => $val){
        if(is_object($val)){
            if($this->eachRecursive($val, $localfilter))
                return true;
        } elseif(is_array($val)){
            foreach($val as $k => $v)
                if($this->eachRecursive($v, $localfilter))
                    return true;
        } elseif(stripos(strval($val), $localfilter) !== false){
            return true;
        }
    }
    return false;
}

private function filterfunction(Collection $collection, string $filter){
    $retVal = [];

    foreach (json_decode($collection->toJson()) as $entity){
        foreach(explode(' ', trim($filter)) as $localfilter)
            if(!$this->eachRecursive($entity, $localfilter))
                continue 2;
        array_push($retVal, $entity->id);
    }

    return $retVal;
}

Leave a comment