[TOC] #### 1. 關(guān)聯(lián)刪除 ---- 模型的關(guān)聯(lián)刪除是經(jīng)常使用的模型特性之一 適用場(chǎng)景舉例: 1、在刪除文章的同時(shí)刪除下面的評(píng)論 2、 刪除用戶的同時(shí)刪除用戶的多條評(píng)論和多條操作日志 #### 2. User 模型定義 ---- 一個(gè)用戶對(duì)應(yīng)多條評(píng)論和多條操作日志,并且在用戶模型已經(jīng)定義模型關(guān)聯(lián)方法 ``` /** * 一對(duì)多關(guān)聯(lián) 用戶對(duì)應(yīng)多個(gè)評(píng)論 * * @return \think\model\relation\hasMany */ public function comments() { return $this->hasMany(Comment::class, 'user_id', 'id'); } /** * 一對(duì)多關(guān)聯(lián) 用戶對(duì)應(yīng)多個(gè)操作日志 * * @return \think\model\relation\hasMany */ public function logs() { return $this->hasMany(Log::class, 'user_id', 'id'); } ``` #### 3. 關(guān)聯(lián)刪除使用示例 ---- 刪除一個(gè)用戶及其發(fā)布的評(píng)論、操作日志 ``` $user_id = 1; $data = User::with(['comments', 'logs'])->findOrEmpty($user_id); $bool = $data->together(['comments', 'logs'])->delete(); ``` 刪除多個(gè)用戶及其發(fā)布的評(píng)論、操作日志 ``` $data = User::with(['comments', 'logs'])->select(); foreach ($data as $model) { $model->together(['comments', 'logs'])->delete(); } ``` #### 4. 特別注意 ---- 查詢時(shí)必須使用 `with` 關(guān)聯(lián)預(yù)載入,否則 `together` 關(guān)聯(lián)刪除無效