概要
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:データの削除
コメント