如何写一个属于自己的数据库封装(9) - DELETE篇

上一期 如何写一个属于自己的数据库封装(8) - CREATE篇
下一期 如何写一个属于自己的数据库封装(10) - 自动载入篇

开始之前

由于个人对 JOIN 的理解非常浅白, 也不曾试过 JOIN 之后删除数据, 为了不祸害别人, delete 函数不支持 JOIN 函数


Builder.php

    // 删除数据库数据
    public function delete() {
        // 如果写保护已经开启,跳出错误
        if($this->writeLock) throw new Exception("data is not allow to delete");
        // 编译delete语法
        $sql = $this->grammar->compileDelete($this);
        // 获取条件语句的值
        $bindings = $this->getBindings();

        // 返回删除结果,成功true失败false
        return $this->connector->delete($sql, $bindings);
    }

Grammar.php

    // 编译delete语句
    public function compileDelete(Builder $query) {
        // 请查看update函数同样逻辑处的说明
        $where = is_null($query->wheres) ? '' : $this->compileWheres($query);
        // 返回delete语句
        return trim("delete from $query->from $where");
    }

完整代码

源代码放在coding.net里, 自己领

写在最后

数据库中的四大操作CRUD已经完整实现, 随着代码渐渐丰富, 我们的数据库封装已经基本可用了完结撒花, 可是对我来说, 这也仅仅是堪用而已, 为了增强使用体验, 更多的衍生函数必须实现, 如 分页, 关联关系, 等等等......
不过在进入衍生篇之前, 我们先实现自动载入吧

上一期 如何写一个属于自己的数据库封装(8) - CREATE篇
下一期 如何写一个属于自己的数据库封装(10) - 自动载入篇

你可能感兴趣的:(如何写一个属于自己的数据库封装(9) - DELETE篇)