上一期 如何寫一個(gè)屬于自己的數(shù)據(jù)庫封裝(8) - CREATE篇
下一期 如何寫一個(gè)屬于自己的數(shù)據(jù)庫封裝(10) - 自動載入篇
開始之前
由于個(gè)人對 JOIN 的理解非常淺白, 也不曾試過 JOIN 之后刪除數(shù)據(jù), 為了不禍害別人, delete 函數(shù)不支持 JOIN 函數(shù)
Builder.php
// 刪除數(shù)據(jù)庫數(shù)據(jù)
public function delete() {
// 如果寫保護(hù)已經(jīng)開啟尸饺,跳出錯(cuò)誤
if($this->writeLock) throw new Exception("data is not allow to delete");
// 編譯delete語法
$sql = $this->grammar->compileDelete($this);
// 獲取條件語句的值
$bindings = $this->getBindings();
// 返回刪除結(jié)果进统,成功true失敗false
return $this->connector->delete($sql, $bindings);
}
Grammar.php
// 編譯delete語句
public function compileDelete(Builder $query) {
// 請查看update函數(shù)同樣邏輯處的說明
$where = is_null($query->wheres) ? '' : $this->compileWheres($query);
// 返回delete語句
return trim("delete from $query->from $where");
}
完整代碼
源代碼放在coding.net里, 自己領(lǐng)
寫在最后
數(shù)據(jù)庫中的四大操作CRUD已經(jīng)完整實(shí)現(xiàn), 隨著代碼漸漸豐富, 我們的數(shù)據(jù)庫封裝已經(jīng)基本可用了完結(jié)撒花, 可是對我來說, 這也僅僅是堪用而已, 為了增強(qiáng)使用體驗(yàn), 更多的衍生函數(shù)必須實(shí)現(xiàn), 如 分頁, 關(guān)聯(lián)關(guān)系, 等等等......
不過在進(jìn)入衍生篇之前, 我們先實(shí)現(xiàn)自動載入吧
上一期 如何寫一個(gè)屬于自己的數(shù)據(jù)庫封裝(8) - CREATE篇
下一期 如何寫一個(gè)屬于自己的數(shù)據(jù)庫封裝(10) - 自動載入篇