이전글 : [PHP] 게시판 만들기 with MVC - 1부 Migration
이전글 : [PHP] 게시판 만들기 with MVC - 2부 Routing
이전글 : [PHP] 게시판 만들기 with MVC - 3부 View(List & Create)
이전글 : [PHP] 게시판 만들기 with MVC - 4부 Controller
이전글 : [PHP] 게시판 만들기 with MVC - 5부 Pagination
이전글 : [PHP] 게시판 만들기 with MVC - 6부 Read
이전글 : [PHP] 게시판 만들기 with MVC - 7부 Update & Delete
이전글 : [PHP] 게시판 만들기 with MVC - 8부 Lock
이전글 : [PHP] 게시판 만들기 with MVC - 9부 Reply(List & Create)
이전글 : [PHP] 게시판 만들기 with MVC - 10부 Reply(Update & Delete)
이전글 : [PHP] 게시판 만들기 with MVC - 11 SubReply
개요
여기까지 다 하셨다면 축하드립니다.
그걸 해내셨군요.
만약 막힌다면 빠르게 제 깃허브에서 소스를 가져가는 걸 권합니다.
https://github.com/DSeung001/php-bbs
우리가 배우려는 거는 프로그램의 흐름과 개념, 로직이지 빠르게 영타를 치려는 게 아니잖아요.
이번 포스팅은 Delete Dummy, 더미 삭제입니다.
이전에도 삭제 기능을 구현했지만 Post 삭제시 관련 Reply가 남아있고
Reply 삭제시 Sub Reply들이 남아있는 상태였습니다, 이것들도 같이 지워지게 수정해 봅시다.
Model
Reply 모델을 잠깐 수정합시다, 메서드 2개를 추가합니다.
- deleteReplies : Post에 관련된 댓글 삭제하기
- deleteSubReplies : Reply 하위에 Sub Reply 삭제하기
bbs/Model/Reply.php
<?php
namespace Model;
use PDOException;
class Reply extends BaseModel
{
...
/**
* Post에 해당하는 댓글 삭제
* @param $postIdx
* @return bool
*/
public function deleteReplies($postIdx): bool
{
try {
$query = "DELETE FROM replies WHERE post_idx = :post_idx";
$stmt = $this->conn->prepare($query);
return $stmt->execute([
'post_idx' => $postIdx,
]);
} catch (PDOException $e) {
error_log($e->getMessage());
return false;
}
}
/**
* Reply 하위의 SubReplies 삭제
* @param $parentIdx
* @return bool
*/
public function deleteSubReplies($parentIdx): bool
{
try {
$query = "DELETE FROM replies WHERE parent_idx = :parent_idx";
$stmt = $this->conn->prepare($query);
return $stmt->execute([
'parent_idx' => $parentIdx,
]);
} catch (PDOException $e) {
error_log($e->getMessage());
return false;
}
}
}
Controller
4줄 추가하면 됩니다.
bbs/Controller/PostController.php
<?php
namespace Controller;
use Model\Post;
// 추가
use Model\Reply;
class PostController extends BaseController
{
private $post;
// 추가
private $reply;
// 생성자를 통해 PostModel 객체 생성
public function __construct()
{
$this->post = new Post();
// 추가
$this->reply = new Reply();
}
...
/**
* 게시글 삭제 기능을 담당
* @return void
*/
public function delete()
{
$idx = $_POST['idx'];
$pw = $_POST['pw'];
if ($this->parametersCheck($idx, $pw)) {
if ($this->post->delete($idx, $pw)) {
// 추가
$this->reply->deleteReplies($idx);
$this->redirect('/bbs', '글이 삭제되었습니다.');
} else {
$this->redirectBack('글 삭제에 실패했습니다.');
}
} else {
$this->redirectBack('입력되지 않은 값이 있습니다.');
}
}
...
}
여기는 한 줄을 추가합시다
bbs/Controller/ReplyController.php
<?php
namespace Controller;
use Model\Reply;
class ReplyController extends BaseController
{
...
/**
* 댓글 삭제 기능을 담당
* @return void
*/
public function delete()
{
$replyIdx = $_POST['reply_idx'];
$pw = $_POST['pw'];
if ($this->parametersCheck($replyIdx, $pw)) {
// 추가
$this->reply->deleteSubReplies($replyIdx);
$this->echoJson($this->reply->delete($replyIdx, $pw));
} else {
$this->echoJson(['result' => false, 'msg' => '입력되지 않은 값이 있습니다.']);
}
}
}
자 끝입니다, 결과를 볼까요
'PHP > Modern PHP' 카테고리의 다른 글
[PHP] 게시판 만들기 with MVC - 11 SubReply (0) | 2023.12.28 |
---|---|
[PHP] 게시판 만들기 with MVC - 10부 Reply(Update & Delete) (2) | 2023.12.28 |
[PHP] 게시판 만들기 with MVC - 9부 Reply(List & Create) (1) | 2023.12.28 |
[PHP] 게시판 만들기 with MVC - 8부 Lock (0) | 2023.12.28 |
[PHP] 게시판 만들기 with MVC - 7부 Update & Delete (0) | 2023.12.27 |