DB\SQL\Mapper::erase PHP Method

erase() public method

Delete current record
public erase ( $filter = NULL ) : integer
$filter string|array
return integer
    function erase($filter = NULL)
    {
        if ($filter) {
            $args = [];
            if (is_array($filter)) {
                $args = isset($filter[1]) && is_array($filter[1]) ? $filter[1] : array_slice($filter, 1, NULL, TRUE);
                $args = is_array($args) ? $args : [1 => $args];
                list($filter) = $filter;
            }
            return $this->db->exec('DELETE FROM ' . $this->table . ' WHERE ' . $filter . ';', $args);
        }
        $args = [];
        $ctr = 0;
        $filter = '';
        $pkeys = [];
        foreach ($this->fields as $key => &$field) {
            if ($field['pkey']) {
                $filter .= ($filter ? ' AND ' : '') . $this->db->quotekey($key) . '=?';
                $args[$ctr + 1] = [$field['previous'], $field['pdo_type']];
                $pkeys[$key] = $field['previous'];
                $ctr++;
            }
            $field['value'] = NULL;
            $field['changed'] = (bool) $field['default'];
            if ($field['pkey']) {
                $field['previous'] = NULL;
            }
            unset($field);
        }
        foreach ($this->adhoc as &$field) {
            $field['value'] = NULL;
            unset($field);
        }
        parent::erase();
        if (isset($this->trigger['beforeerase']) && \Base::instance()->call($this->trigger['beforeerase'], [$this, $pkeys]) === FALSE) {
            return 0;
        }
        $out = $this->db->exec('DELETE FROM ' . $this->table . ' WHERE ' . $filter . ';', $args);
        if (isset($this->trigger['aftererase'])) {
            \Base::instance()->call($this->trigger['aftererase'], [$this, $pkeys]);
        }
        return $out;
    }