PodsData::traverse PHP Method

traverse() public method

Recursively join tables based on fields
public traverse ( array $fields = null, null $all_fields = null, object $params = null ) : array
$fields array Fields to recurse
$all_fields null (optional) If $fields is empty then traverse all fields, argument does not need to be passed
$params object (optional) Parameters from build()
return array Array of joins
    function traverse($fields = null, $all_fields = null, $params = null)
    {
        $joins = array();
        if (null === $fields) {
            $fields = $this->traverse_build($all_fields, $params);
        }
        foreach ((array) $fields as $field_group) {
            $traverse_recurse = array('pod' => $this->pod, 'fields' => $fields, 'params' => $params, 'last_table_info' => $this->pod_data, 'joined_id' => $this->pod_data['field_id'], 'joined_index' => $this->pod_data['field_index']);
            if (is_array($field_group)) {
                $traverse_recurse['fields'] = $field_group;
                $joins = array_merge($joins, $this->traverse_recurse($traverse_recurse));
            } else {
                $joins = array_merge($joins, $this->traverse_recurse($traverse_recurse));
                $joins = array_filter($joins);
                return $joins;
            }
        }
        $joins = array_filter($joins);
        return $joins;
    }