0

CakePHPを使用して、自分のサイトの1つにコメント機能を実装しました。そのfind('threaded')機能です。

親コメントを削除するときは、CakePHPモデルのdeleteメソッドを使用して、子コメント(nレベルの子)もすべて削除する必要があります。

たとえば、次のような場合です。

id = 5 parent_id = 0;
id = 6 parent_id = 5;
id = 7 parent_id = 5;
id = 8 parent_id = 7 ;

そして私はします:

$this->Comment->id = 5;
$this->Comment->delete();

コメントID=5、6、7、8のレコードを削除したい。

ご意見をお聞かせください。
ありがとう

4

2 に答える 2

1

次のコードはテストしていませんが、次のようにします。

<?php
class Comment extends AppModel {
    public function afterDelete() {
        $this->deleteChildren($this->id);
    }

    private function deleteChildren($parentId) {
        $children = $this->findByParentId($parentId);
        if (!empty($children)) {
            foreach ($children as $child) {
                $this->deleteChildren($child['Comment']['id']);
                $this->delete($child['Comment']['id']);
            }
        }
    }
}
?>
于 2012-05-11T06:37:00.703 に答える
0

上記の@greewの回答のマイナーな修正により、以下のように機能しました。

public function afterDelete() {
     $this->__deleteChildren($this->id);
}

private function __deleteChildren($parentId) {
   $children = $this->findAllByParentId($parentId);
   if (!empty($children)) {
        foreach ($children as $child) {
           $this->delete($child['Comment']['id']);
        }
    }
}

どうもありがとう!

于 2012-05-11T09:41:01.277 に答える