データ削除時に関数を実行する【CakePHP4】

概要

DBのデータをdelete()等で削除する際に一定の処理を実行する。

前提条件

以下のようなデータを持つusersテーブルがあるとする。

●テーブル名:users

・データ:id(通し番号)

・データ:name(名前)

・データ:thumbnail(サムネイル画像のファイルパス)

thumbnailについては、DBにサムネイルのファイルパス(テキスト)を保持しており、サーバ上にサムネイル画像ファイルを保持しているとする。

やりたいこと

usersのデータをdelete()で削除する際に、サムネイル画像ファイルの削除も同時に行う。

コード

src/Model/Table/UsersTable.php

<?php

declare(strict_types=1);

namespace App\Model\Table;

use Cake\Event\Event;

class UsersTable extends Table
{
    ・・・省略
   public function beforeDelete(Event $event, $entity, $options)
    {
        $filePath = "Path_To_Thumbnail_DIrectory".$entity->thumbnail;
        unlink($filePath);
    }
}

これで、userのデータをdelete()等で削除すると、サムネイルの画像ファイルも削除されるようになる。

※”Path_To_Thumbnail_DIrectory”にはサムネイル画像を保持しているディレクトリまでのパスを記載する。

参考

CakePHP 4.x Strawberry Cookbookデータの削除

コメント

タイトルとURLをコピーしました