public function hydrate($data, $removePrimaryKey = false)
    {
        foreach ($data as $key => $value) {
            if (property_exists($this, $key)) {
                $this->$key = $value;
            } else {
                $this->extra[$key] = $value;
            }
        }
        if ($removePrimaryKey) {
            $key = $this->getPrimaryKey();
            $this->$key = null;
        }
        return $this;
    }