上一期 如何写一个属于自己的数据库封装(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) - 自动载入篇